#include <QtWidgets> #include "window.h" //! [0] Window::Window() { QGroupBox *echoGroup = new QGroupBox(tr( "Echo" )); QLabel *echoLabel = new QLabel(tr( "Mode:" )); QComboBox *echoComboBox = new QComboBox; echoComboBox->addItem(tr( "Normal" )); echoComboBox->addItem(tr( "Password" )); echoComboBox->addItem(tr( "PasswordEchoOnEdit" )); echoComboBox->addItem(tr( "No Echo" )); echoLineEdit = new QLineEdit; //test /*QRegExp rx("(-|\\+)?[0-8]\\d:[0-5]\\d:[0-5]\\d"); echoLineEdit->setValidator(new QRegExpValidator(rx, echoLineEdit)); echoLineEdit->setInputMask("#00:00:00;0"); echoLineEdit->setText("+00:00:00");*/ //echoLineEdit->setMaxLength(9); echoLineEdit->setPlaceholderText( "电影、影人、影院、电视剧" ); echoLineEdit->setFocus(); //! [0] //! [1] QGroupBox *validatorGroup = new QGroupBox(tr( "Validator" )); QLabel *validatorLabel = new QLabel(tr( "Type:" )); QComboBox *validatorComboBox = new QComboBox; validatorComboBox->addItem(tr( "No validator" )); validatorComboBox->addItem(tr( "Integer validator" )); validatorComboBox->addItem(tr( "Double validator" )); validatorLineEdit = new QLineEdit; validatorLineEdit->setPlaceholderText( "Placeholder Text" ); //! [1] //! [2] QGroupBox *alignmentGroup = new QGroupBox(tr( "Alignment" )); QLabel *alignmentLabel = new QLabel(tr( "Type:" )); QComboBox *alignmentComboBox = new QComboBox; alignmentComboBox->addItem(tr( "Left" )); alignmentComboBox->addItem(tr( "Centered" )); alignmentComboBox->addItem(tr( "Right" )); alignmentLineEdit = new QLineEdit; alignmentLineEdit->setPlaceholderText( "Placeholder Text" ); //! [2] //! [3] QGroupBox *inputMaskGroup = new QGroupBox(tr( "Input mask" )); QLabel *inputMaskLabel = new QLabel(tr( "Type:" )); QComboBox *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; inputMaskLineEdit->setPlaceholderText( "Placeholder Text" ); //! [3] //! [4] QGroupBox *accessGroup = new QGroupBox(tr( "Access" )); QLabel *accessLabel = new QLabel(tr( "Read-only:" )); QComboBox *accessComboBox = new QComboBox; accessComboBox->addItem(tr( "False" )); accessComboBox->addItem(tr( "True" )); accessLineEdit = new QLineEdit; accessLineEdit->setPlaceholderText( "Placeholder Text" ); //! [4] //! [5] connect(echoComboBox, SIGNAL(activated( int )), this , SLOT(echoChanged( int ))); connect(validatorComboBox, SIGNAL(activated( int )), this , SLOT(validatorChanged( int ))); connect(alignmentComboBox, SIGNAL(activated( int )), this , SLOT(alignmentChanged( int ))); connect(inputMaskComboBox, SIGNAL(activated( int )), this , SLOT(inputMaskChanged( int ))); connect(accessComboBox, SIGNAL(activated( int )), this , SLOT(accessChanged( int ))); //! [5] //! [6] QGridLayout *echoLayout = new QGridLayout; echoLayout->addWidget(echoLabel, 0, 0); echoLayout->addWidget(echoComboBox, 0, 1); echoLayout->addWidget(echoLineEdit, 1, 0, 1, 2); echoGroup->setLayout(echoLayout); //! [6] //! [7] QGridLayout *validatorLayout = new QGridLayout; validatorLayout->addWidget(validatorLabel, 0, 0); validatorLayout->addWidget(validatorComboBox, 0, 1); validatorLayout->addWidget(validatorLineEdit, 1, 0, 1, 2); validatorGroup->setLayout(validatorLayout); QGridLayout *alignmentLayout = new QGridLayout; alignmentLayout->addWidget(alignmentLabel, 0, 0); alignmentLayout->addWidget(alignmentComboBox, 0, 1); alignmentLayout->addWidget(alignmentLineEdit, 1, 0, 1, 2); alignmentGroup-> setLayout(alignmentLayout); QGridLayout *inputMaskLayout = new QGridLayout; inputMaskLayout->addWidget(inputMaskLabel, 0, 0); inputMaskLayout->addWidget(inputMaskComboBox, 0, 1); inputMaskLayout->addWidget(inputMaskLineEdit, 1, 0, 1, 2); inputMaskGroup->setLayout(inputMaskLayout); QGridLayout *accessLayout = new QGridLayout; accessLayout->addWidget(accessLabel, 0, 0); accessLayout->addWidget(accessComboBox, 0, 1); accessLayout->addWidget(accessLineEdit, 1, 0, 1, 2); accessGroup->setLayout(accessLayout); //! [7] //! [8] QGridLayout *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" )); } //! [8] //! [9] void Window::echoChanged( int 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); } } //! [9] //! [10] void Window::validatorChanged( int index) { switch (index) { case 0: //无限制 validatorLineEdit->setValidator(0); break ; case 1: //只能输入整数 validatorLineEdit->setValidator( new QIntValidator( validatorLineEdit)); break ; case 2: //实例,只能输入-180到180之间的小数,小数点后最多两位(可用于限制经纬度等) QDoubleValidator *pDfValidator = new QDoubleValidator(-180.0, 180.0 , 2, validatorLineEdit); pDfValidator->setNotation(QDoubleValidator::StandardNotation); validatorLineEdit->setValidator(pDfValidator); } validatorLineEdit->clear(); } //! [10] //! [11] void Window::alignmentChanged( int index) { switch (index) { case 0: alignmentLineEdit->setAlignment(Qt::AlignLeft); break ; case 1: alignmentLineEdit->setAlignment(Qt::AlignCenter); break ; case 2: alignmentLineEdit->setAlignment(Qt::AlignRight); } } //! [11] //! [12] void Window::inputMaskChanged( int 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;#" ); } } //! [12] //! [13] void Window::accessChanged( int index) { switch (index) { case 0: accessLineEdit->setReadOnly( false ); break ; case 1: accessLineEdit->setReadOnly( true ); } } //! [13] |