在Qt design下,先设计下界面
分别把伙伴关系、信号/槽关系、响应函数设计出来:
接下来编写代码:
//dialog.h #ifndef DIALOG_H #define DIALOG_H #include <QtWidgets/QMainWindow> #include "ui_dialog.h" #include <QMessageBox> class Dialog : public QMainWindow { Q_OBJECT private slots: void enableLoginButton( const QString &); void login(); public: Dialog(QWidget *parent = 0); ~Dialog(); private: Ui::DialogClass ui; }; #endif // DIALOG_H //dialog.cpp #include "dialog.h" Dialog::Dialog(QWidget *parent) : QMainWindow(parent) { ui.setupUi(this); } Dialog::~Dialog() { } void Dialog::enableLoginButton(const QString & text) { ui.loginButton->setEnabled(!text.isEmpty()); } void Dialog::login() { QString userName = ui.userNamerLEdit->text(); QString passWord = ui.passWordLEdit->text(); if ("888888" == userName ) { if( "888888" == passWord) { QMessageBox::information(this, tr("Congratulation"), tr("welcome!")); } else { QMessageBox::information(this, tr("warning"), tr("password invalide")); } } else { QMessageBox::information(this, tr("warning"), tr("this user is not")); } } //main.cpp #include "dialog.h" #include <QtWidgets/QApplication> int main(int argc, char *argv[]) { QApplication a(argc, argv); Dialog w; w.show(); return a.exec(); }
也就是ui_dialog.h
/******************************************************************************** ** Form generated from reading UI file 'dialog.ui' ** ** Created by: Qt User Interface Compiler version 5.1.0 ** ** WARNING! All changes made in this file will be lost when recompiling UI file! ********************************************************************************/ #ifndef UI_DIALOG_H #define UI_DIALOG_H #include <QtCore/QVariant> #include <QtWidgets/QAction> #include <QtWidgets/QApplication> #include <QtWidgets/QButtonGroup> #include <QtWidgets/QGridLayout> #include <QtWidgets/QHeaderView> #include <QtWidgets/QLabel> #include <QtWidgets/QLineEdit> #include <QtWidgets/QMainWindow> #include <QtWidgets/QMenuBar> #include <QtWidgets/QPushButton> #include <QtWidgets/QStatusBar> #include <QtWidgets/QToolBar> #include <QtWidgets/QWidget> QT_BEGIN_NAMESPACE class Ui_DialogClass { public: QWidget *centralWidget; QWidget *layoutWidget; QGridLayout *gridLayout; QLabel *label1; QLineEdit *userNamerLEdit; QPushButton *loginButton; QLabel *label2; QLineEdit *passWordLEdit; QPushButton *clearButton; QMenuBar *menuBar; QToolBar *mainToolBar; QStatusBar *statusBar; void setupUi(QMainWindow *DialogClass) { if (DialogClass->objectName().isEmpty()) DialogClass->setObjectName(QStringLiteral("DialogClass")); DialogClass->setEnabled(true); DialogClass->resize(591, 353); centralWidget = new QWidget(DialogClass); centralWidget->setObjectName(QStringLiteral("centralWidget")); layoutWidget = new QWidget(centralWidget); layoutWidget->setObjectName(QStringLiteral("layoutWidget")); layoutWidget->setGeometry(QRect(70, 70, 381, 111)); gridLayout = new QGridLayout(layoutWidget); gridLayout->setSpacing(6); gridLayout->setContentsMargins(11, 11, 11, 11); gridLayout->setObjectName(QStringLiteral("gridLayout")); gridLayout->setContentsMargins(0, 0, 0, 0); label1 = new QLabel(layoutWidget); label1->setObjectName(QStringLiteral("label1")); gridLayout->addWidget(label1, 0, 0, 1, 1); userNamerLEdit = new QLineEdit(layoutWidget); userNamerLEdit->setObjectName(QStringLiteral("userNamerLEdit")); gridLayout->addWidget(userNamerLEdit, 0, 1, 1, 1); loginButton = new QPushButton(layoutWidget); loginButton->setObjectName(QStringLiteral("loginButton")); loginButton->setEnabled(false); loginButton->setDefault(true); gridLayout->addWidget(loginButton, 0, 2, 1, 1); label2 = new QLabel(layoutWidget); label2->setObjectName(QStringLiteral("label2")); gridLayout->addWidget(label2, 1, 0, 1, 1); passWordLEdit = new QLineEdit(layoutWidget); passWordLEdit->setObjectName(QStringLiteral("passWordLEdit")); gridLayout->addWidget(passWordLEdit, 1, 1, 1, 1); clearButton = new QPushButton(layoutWidget); clearButton->setObjectName(QStringLiteral("clearButton")); gridLayout->addWidget(clearButton, 1, 2, 1, 1); DialogClass->setCentralWidget(centralWidget); menuBar = new QMenuBar(DialogClass); menuBar->setObjectName(QStringLiteral("menuBar")); menuBar->setGeometry(QRect(0, 0, 591, 23)); DialogClass->setMenuBar(menuBar); mainToolBar = new QToolBar(DialogClass); mainToolBar->setObjectName(QStringLiteral("mainToolBar")); DialogClass->addToolBar(Qt::TopToolBarArea, mainToolBar); statusBar = new QStatusBar(DialogClass); statusBar->setObjectName(QStringLiteral("statusBar")); DialogClass->setStatusBar(statusBar); #ifndef QT_NO_SHORTCUT label1->setBuddy(userNamerLEdit); label2->setBuddy(passWordLEdit); #endif // QT_NO_SHORTCUT QWidget::setTabOrder(userNamerLEdit, passWordLEdit); QWidget::setTabOrder(passWordLEdit, loginButton); QWidget::setTabOrder(loginButton, clearButton); retranslateUi(DialogClass); QObject::connect(passWordLEdit, SIGNAL(textChanged(QString)), DialogClass, SLOT(enableLoginButton(QString))); QObject::connect(loginButton, SIGNAL(clicked()), DialogClass, SLOT(login())); QObject::connect(clearButton, SIGNAL(clicked()), passWordLEdit, SLOT(clear())); QObject::connect(clearButton, SIGNAL(clicked()), userNamerLEdit, SLOT(clear())); QMetaObject::connectSlotsByName(DialogClass); } // setupUi void retranslateUi(QMainWindow *DialogClass) { DialogClass->setWindowTitle(QApplication::translate("DialogClass", "Dialog", 0)); label1->setText(QApplication::translate("DialogClass", "User&Name", 0)); loginButton->setText(QApplication::translate("DialogClass", "&Login", 0)); label2->setText(QApplication::translate("DialogClass", "&Password", 0)); clearButton->setText(QApplication::translate("DialogClass", "&Clear", 0)); } // retranslateUi }; namespace Ui { class DialogClass: public Ui_DialogClass {}; } // namespace Ui QT_END_NAMESPACE #endif // UI_DIALOG_H