#!/usr/bin/env qore # This is basically a direct port of the QT widget example # "groupbox" to Qore using Qore's "qt" module. # Note that Qore's "qt" module requires QT 4.3 or above # use the "qt-gui" module %requires qt-gui # this is an object-oriented program, the application class is "groupbox_example" %exec-class groupbox_example # require all variables to be explicitly declared %require-our # enable all parse warnings %enable-all-warnings class Window inherits QWidget { constructor($parent) : QWidget($parent) { my $grid = new QGridLayout(); $grid.addWidget($.createFirstExclusiveGroup(), 0, 0); $grid.addWidget($.createSecondExclusiveGroup(), 1, 0); $grid.addWidget($.createNonExclusiveGroup(), 0, 1); $grid.addWidget($.createPushButtonGroup(), 1, 1); $.setLayout($grid); $.setWindowTitle(TR("Group Boxes")); $.resize(480, 320); } createFirstExclusiveGroup() { my $groupBox = new QGroupBox(TR("Exclusive Radio Buttons")); my $radio1 = new QRadioButton(TR("&Radio button 1")); my $radio2 = new QRadioButton(TR("R&adio button 2")); my $radio3 = new QRadioButton(TR("Ra&dio button 3")); $radio1.setChecked(True); my $vbox = new QVBoxLayout(); $vbox.addWidget($radio1); $vbox.addWidget($radio2); $vbox.addWidget($radio3); $vbox.addStretch(1); $groupBox.setLayout($vbox); return $groupBox; } createSecondExclusiveGroup() { my $groupBox = new QGroupBox(TR("E&xclusive Radio Buttons")); $groupBox.setCheckable(True); $groupBox.setChecked(False); my $radio1 = new QRadioButton(TR("Rad&io button 1")); my $radio2 = new QRadioButton(TR("Radi&o button 2")); my $radio3 = new QRadioButton(TR("Radio &button 3")); $radio1.setChecked(True); my $checkBox = new QCheckBox(TR("Ind&ependent checkbox")); $checkBox.setChecked(True); my $vbox = new QVBoxLayout(); $vbox.addWidget($radio1); $vbox.addWidget($radio2); $vbox.addWidget($radio3); $vbox.addWidget($checkBox); $vbox.addStretch(1); $groupBox.setLayout($vbox); return $groupBox; } createNonExclusiveGroup() { my $groupBox = new QGroupBox(TR("Non-Exclusive Checkboxes")); $groupBox.setFlat(True); my $checkBox1 = new QCheckBox(TR("&Checkbox 1")); my $checkBox2 = new QCheckBox(TR("C&heckbox 2")); $checkBox2.setChecked(True); my $tristateBox = new QCheckBox(TR("Tri-&state button")); $tristateBox.setTristate(True); $tristateBox.setCheckState(Qt::PartiallyChecked); my $vbox = new QVBoxLayout(); $vbox.addWidget($checkBox1); $vbox.addWidget($checkBox2); $vbox.addWidget($tristateBox); $vbox.addStretch(1); $groupBox.setLayout($vbox); return $groupBox; } createPushButtonGroup() { my $groupBox = new QGroupBox(TR("&Push Buttons")); $groupBox.setCheckable(True); $groupBox.setChecked(True); my $pushButton = new QPushButton(TR("&Normal Button")); my $toggleButton = new QPushButton(TR("&Toggle Button")); $toggleButton.setCheckable(True); $toggleButton.setChecked(True); my $flatButton = new QPushButton(TR("&Flat Button")); $flatButton.setFlat(True); my $popupButton = new QPushButton(TR("Pop&up Button")); my $menu = new QMenu($self); $menu.addAction(TR("&First Item")); $menu.addAction(TR("&Second Item")); $menu.addAction(TR("&Third Item")); $menu.addAction(TR("F&ourth Item")); $popupButton.setMenu($menu); my $newAction = $menu.addAction(TR("Submenu")); my $subMenu = new QMenu(TR("Popup Submenu")); $subMenu.addAction(TR("Item 1")); $subMenu.addAction(TR("Item 2")); $subMenu.addAction(TR("Item 3")); $newAction.setMenu($subMenu); my $vbox = new QVBoxLayout(); $vbox.addWidget($pushButton); $vbox.addWidget($toggleButton); $vbox.addWidget($flatButton); $vbox.addWidget($popupButton); $vbox.addStretch(1); $groupBox.setLayout($vbox); return $groupBox; } } class groupbox_example inherits QApplication { constructor() { my $window = new Window(); $window.show(); $.exec(); } }