HEADERS += Find.h QT += widgets SOURCES += Find.cpp main.cpp
//Find.h #ifndef FIND_H #define FIND_H #include <QDialog> class QCheckBox; class QLabel; class QLineEdit; class QPushButton; class FindDialog : public QDialog { Q_OBJECT public: FindDialog(QWidget *parent = NULL); signals: void findNext(const QString &str,Qt::CaseSensitivity cs); void findPrevious(const QString &str,Qt::CaseSensitivity cs); private slots: void findClicled(); void enableFindButton(const QString &text); private: QLabel* label; QLineEdit* lineEdit; QCheckBox* caseCheckBox; QCheckBox* backwardCheckBox; QPushButton* findButton; QPushButton* closeButton; }; #endif // FIND_H
//Find.cpp #include <QtGui> #include <QHBoxLayout> #include <QVBoxLayout> #include <QLabel> #include <QLineEdit> #include <QPushButton> #include <QCheckBox> #include "Find.h" FindDialog::FindDialog(QWidget *parent) { label = new QLabel(tr("Find &what")); lineEdit = new QLineEdit; label->setBuddy(lineEdit); caseCheckBox = new QCheckBox(tr("Match &case")); backwardCheckBox = new QCheckBox(tr("Serach &backward")); findButton = new QPushButton(tr("&Find")); closeButton = new QPushButton(tr("&Close")); findButton->setDefault(true); findButton->setEnabled(false); connect(lineEdit,SIGNAL(textChanged(const QString&)), this,SLOT( enableFindButton(const QString&) ) ); connect(findButton,SIGNAL(clicked()),this,SLOT(findClicked())); connect(closeButton,SIGNAL(clicked()),this,SLOT(close())); QHBoxLayout* topLeftLayout = new QHBoxLayout; topLeftLayout->addWidget(label); topLeftLayout->addWidget(lineEdit); QVBoxLayout* leftLayout = new QVBoxLayout; leftLayout->addLayout(topLeftLayout); leftLayout->addWidget(caseCheckBox); leftLayout->addWidget(backwardCheckBox); QVBoxLayout* rightLayout = new QVBoxLayout; rightLayout->addWidget(findButton); rightLayout->addWidget(closeButton); rightLayout->addStretch(); QHBoxLayout* mainLayout = new QHBoxLayout; mainLayout->addLayout(leftLayout); mainLayout->addLayout(rightLayout); setLayout(mainLayout); setWindowTitle(tr("Find")); setFixedHeight(sizeHint().height()); } void FindDialog::findClicled() { QString text = lineEdit->text(); Qt::CaseSensitivity cs = caseCheckBox->isChecked() ? Qt::CaseSensitive : Qt::CaseInsensitive; if (backwardCheckBox->isChecked()) { emit(findPrevious(text,cs)); } else { emit(findNext(text,cs)); } } void FindDialog::enableFindButton(const QString& text) { }
//main.cpp #include <QApplication> #include "Find.h" int main(int argc,char* argv[]) { QApplication app(argc,argv); FindDialog *dialog = new FindDialog; dialog->show(); return app.exec(); }
#include <QApplication> #include "Find.h" int main(int argc,char* argv[]) { QApplication app(argc,argv); //app用来管理整个应用程序使用到的资源 FindDialog *dialog = new FindDialog; dialog->show(); return app.exec(); //将应用程序的控制权交给qt,程序会进入事件循环状态。 }
原文地址:http://blog.csdn.net/ddupd/article/details/38292277