#!/usr/bin/env qore # This is basically a direct port of the QT widget example # "lineedits" 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 "lineedits_example" %exec-class lineedits_example # require all variables to be explicitly declared %require-our # enable all parse warnings %enable-all-warnings class Window inherits QWidget { constructor() { my $echoGroup = new QGroupBox(TR("Echo")); my $echoLabel = new QLabel(TR("Mode:")); my $echoComboBox = new QComboBox(); $echoComboBox.addItem(TR("Normal")); $echoComboBox.addItem(TR("Password")); $echoComboBox.addItem(TR("PasswordEchoOnEdit")); $echoComboBox.addItem(TR("No Echo")); $.echoLineEdit = new QLineEdit(); $.echoLineEdit.setFocus(); my $validatorGroup = new QGroupBox(TR("Validator")); my $validatorLabel = new QLabel(TR("Type:")); my $validatorComboBox = new QComboBox(); $validatorComboBox.addItem(TR("No validator")); $validatorComboBox.addItem(TR("Integer validator")); $validatorComboBox.addItem(TR("Double validator")); $.validatorLineEdit = new QLineEdit(); my $alignmentGroup = new QGroupBox(TR("Alignment")); my $alignmentLabel = new QLabel(TR("Type:")); my $alignmentComboBox = new QComboBox(); $alignmentComboBox.addItem(TR("Left")); $alignmentComboBox.addItem(TR("Centered")); $alignmentComboBox.addItem(TR("Right")); $.alignmentLineEdit = new QLineEdit(); my $inputMaskGroup = new QGroupBox(TR("Input mask")); my $inputMaskLabel = new QLabel(TR("Type:")); my $inputMaskComboBox = new QComboBox(); $inputMaskComboBox.addItem(TR("No mask")); $inputMaskComboBox.addItem(TR("Phone number")); $inputMaskComboBox.addItem(TR("ISO date")); $inputMaskComboBox.addItem(TR("License key")); $.inputMaskLineEdit = new QLineEdit(); my $accessGroup = new QGroupBox(TR("Access")); my $accessLabel = new QLabel(TR("Read-only:")); my $accessComboBox = new QComboBox(); $accessComboBox.addItem(TR("False")); $accessComboBox.addItem(TR("True")); $.accessLineEdit = new QLineEdit(); $.connect($echoComboBox, SIGNAL("activated(int)"), SLOT("echoChanged(int)")); $.connect($validatorComboBox, SIGNAL("activated(int)"), SLOT("validatorChanged(int)")); $.connect($alignmentComboBox, SIGNAL("activated(int)"), SLOT("alignmentChanged(int)")); $.connect($inputMaskComboBox, SIGNAL("activated(int)"), SLOT("inputMaskChanged(int)")); $.connect($accessComboBox, SIGNAL("activated(int)"), SLOT("accessChanged(int)")); my $echoLayout = new QGridLayout(); $echoLayout.addWidget($echoLabel, 0, 0); $echoLayout.addWidget($echoComboBox, 0, 1); $echoLayout.addWidget($.echoLineEdit, 1, 0, 1, 2); $echoGroup.setLayout($echoLayout); my $validatorLayout = new QGridLayout(); $validatorLayout.addWidget($validatorLabel, 0, 0); $validatorLayout.addWidget($validatorComboBox, 0, 1); $validatorLayout.addWidget($.validatorLineEdit, 1, 0, 1, 2); $validatorGroup.setLayout($validatorLayout); my $alignmentLayout = new QGridLayout(); $alignmentLayout.addWidget($alignmentLabel, 0, 0); $alignmentLayout.addWidget($alignmentComboBox, 0, 1); $alignmentLayout.addWidget($.alignmentLineEdit, 1, 0, 1, 2); $alignmentGroup. setLayout($alignmentLayout); my $inputMaskLayout = new QGridLayout(); $inputMaskLayout.addWidget($inputMaskLabel, 0, 0); $inputMaskLayout.addWidget($inputMaskComboBox, 0, 1); $inputMaskLayout.addWidget($.inputMaskLineEdit, 1, 0, 1, 2); $inputMaskGroup.setLayout($inputMaskLayout); my $accessLayout = new QGridLayout(); $accessLayout.addWidget($accessLabel, 0, 0); $accessLayout.addWidget($accessComboBox, 0, 1); $accessLayout.addWidget($.accessLineEdit, 1, 0, 1, 2); $accessGroup.setLayout($accessLayout); my $layout = new QGridLayout(); $layout.addWidget($echoGroup, 0, 0); $layout.addWidget($validatorGroup, 1, 0); $layout.addWidget($alignmentGroup, 2, 0); $layout.addWidget($inputMaskGroup, 0, 1); $layout.addWidget($accessGroup, 1, 1); $.setLayout($layout); $.setWindowTitle(TR("Line Edits")); } echoChanged($index) { switch ($index) { case 0: $.echoLineEdit.setEchoMode(QLineEdit::Normal); break; case 1: $.echoLineEdit.setEchoMode(QLineEdit::Password); break; case 2: $.echoLineEdit.setEchoMode(QLineEdit::PasswordEchoOnEdit); break; case 3: $.echoLineEdit.setEchoMode(QLineEdit::NoEcho); } } validatorChanged($index) { switch ($index) { case 0: $.validatorLineEdit.setValidator(); break; case 1: $.validatorLineEdit.setValidator(new QIntValidator($.validatorLineEdit)); break; case 2: $.validatorLineEdit.setValidator(new QDoubleValidator(-999.0, 999.0, 2, $.validatorLineEdit)); } $.validatorLineEdit.clear(); } alignmentChanged($index) { switch ($index) { case 0: $.alignmentLineEdit.setAlignment(Qt::AlignLeft); break; case 1: $.alignmentLineEdit.setAlignment(Qt::AlignCenter); break; case 2: $.alignmentLineEdit.setAlignment(Qt::AlignRight); } } inputMaskChanged($index) { switch ($index) { case 0: $.inputMaskLineEdit.setInputMask(""); break; case 1: $.inputMaskLineEdit.setInputMask("+99 99 99 99 99;_"); break; case 2: $.inputMaskLineEdit.setInputMask("0000-00-00"); $.inputMaskLineEdit.setText("00000000"); $.inputMaskLineEdit.setCursorPosition(0); break; case 3: $.inputMaskLineEdit.setInputMask(">AAAAA-AAAAA-AAAAA-AAAAA-AAAAA;#"); } } accessChanged($index) { switch ($index) { case 0: $.accessLineEdit.setReadOnly(False); break; case 1: $.accessLineEdit.setReadOnly(True); } } } class lineedits_example inherits QApplication { constructor() { my $window = new Window(); $window.show(); $.exec(); } }