find


#ifndef FINDDIALOG_H  #define FINDDIALOG_H    #include <QDialog>    class QCheckBox;  class QLabel;  class QLineEdit;  class QPushButton;    class FindDialog : public QDialog  {      Q_object    public:      FindDialog(QWidget *parent = 0);    signals:      void findNext(const QString &str Qt::CaseSensitivity cs);      void findPrevious(const QString &str Qt::CaseSensitivity cs);    private slots:      void findClicked();      void enableFindButton(const QString &text);    private:      QLabel *label;      QLineEdit *lineEdit;      QCheckBox *caseCheckBox;      QCheckBox *backwardCheckBox;      QPushButton *findButton;      QPushButton *closeButton;  };    #endif  

2. [代码]finddialog.cpp     跳至 [1] [2] [3] [全屏预览]

#include <QtGui>    #include "finddialog.h"    FindDialog::FindDialog(QWidget *parent)      : QDialog(parent)  {      label = new QLabel(tr("Find &what:"));      lineEdit = new QLineEdit;      label->setBuddy(lineEdit);        caseCheckBox = new QCheckBox(tr("Match &case"));      backwardCheckBox = new QCheckBox(tr("Search &backward"));        findButton = new QPushButton(tr("&Find"));      findButton->setDefault(true);      findButton->setEnabled(false);        closeButton = new QPushButton(tr("Close"));        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::findClicked()  {      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)  {      findButton->setEnabled(!text.isEmpty());  }  

3. [代码]main.cpp     跳至 [1] [2] [3] [全屏预览]

#include <QApplication>    #include "finddialog.h"    int main(int argc char *argv[])  {      QApplication app(argc argv);      FindDialog *dialog = new FindDialog;      dialog->show();      return app.exec();  }  



分享这篇文章:
收藏+0