在路上

 找回密码
 立即注册
在路上 站点首页 学习 查看内容

find

2016-12-20 13:14| 发布者: zhangjf| 查看: 458| 评论: 0

摘要: 出自《C++ GUI Qt 4 编程》第10-14页 #ifndef FINDDIALOG_H#define FINDDIALOG_H#include QDialogclass QCheckBox;class QLabel;class QLineEdit;class QPushButton;class FindDialog : public Q ...
出自《C++ GUI Qt 4 编程》第10-14页
  1. #ifndef FINDDIALOG_H
  2. #define FINDDIALOG_H
  3. #include <QDialog>
  4. class QCheckBox;
  5. class QLabel;
  6. class QLineEdit;
  7. class QPushButton;
  8. class FindDialog : public QDialog
  9. {
  10. Q_OBJECT
  11. public:
  12. FindDialog(QWidget *parent = 0);
  13. signals:
  14. void findNext(const QString &str, Qt::CaseSensitivity cs);
  15. void findPrevious(const QString &str, Qt::CaseSensitivity cs);
  16. private slots:
  17. void findClicked();
  18. void enableFindButton(const QString &text);
  19. private:
  20. QLabel *label;
  21. QLineEdit *lineEdit;
  22. QCheckBox *caseCheckBox;
  23. QCheckBox *backwardCheckBox;
  24. QPushButton *findButton;
  25. QPushButton *closeButton;
  26. };
  27. #endif
复制代码
  1. #include <QtGui>
  2. #include "finddialog.h"
  3. FindDialog::FindDialog(QWidget *parent)
  4. : QDialog(parent)
  5. {
  6. label = new QLabel(tr("Find &what:"));
  7. lineEdit = new QLineEdit;
  8. label->setBuddy(lineEdit);
  9. caseCheckBox = new QCheckBox(tr("Match &case"));
  10. backwardCheckBox = new QCheckBox(tr("Search &backward"));
  11. findButton = new QPushButton(tr("&Find"));
  12. findButton->setDefault(true);
  13. findButton->setEnabled(false);
  14. closeButton = new QPushButton(tr("Close"));
  15. connect(lineEdit, SIGNAL(textChanged(const QString &)),
  16. this, SLOT(enableFindButton(const QString &)));
  17. connect(findButton, SIGNAL(clicked()),
  18. this, SLOT(findClicked()));
  19. connect(closeButton, SIGNAL(clicked()),
  20. this, SLOT(close()));
  21. QHBoxLayout *topLeftLayout = new QHBoxLayout;
  22. topLeftLayout->addWidget(label);
  23. topLeftLayout->addWidget(lineEdit);
  24. QVBoxLayout *leftLayout = new QVBoxLayout;
  25. leftLayout->addLayout(topLeftLayout);
  26. leftLayout->addWidget(caseCheckBox);
  27. leftLayout->addWidget(backwardCheckBox);
  28. QVBoxLayout *rightLayout = new QVBoxLayout;
  29. rightLayout->addWidget(findButton);
  30. rightLayout->addWidget(closeButton);
  31. rightLayout->addStretch();
  32. QHBoxLayout *mainLayout = new QHBoxLayout;
  33. mainLayout->addLayout(leftLayout);
  34. mainLayout->addLayout(rightLayout);
  35. setLayout(mainLayout);
  36. setWindowTitle(tr("Find"));
  37. setFixedHeight(sizeHint().height());
  38. }
  39. void FindDialog::findClicked()
  40. {
  41. QString text = lineEdit->text();
  42. Qt::CaseSensitivity cs =
  43. caseCheckBox->isChecked() ? Qt::CaseSensitive
  44. : Qt::CaseInsensitive;
  45. if (backwardCheckBox->isChecked()) {
  46. emit findPrevious(text, cs);
  47. } else {
  48. emit findNext(text, cs);
  49. }
  50. }
  51. void FindDialog::enableFindButton(const QString &text)
  52. {
  53. findButton->setEnabled(!text.isEmpty());
  54. }
复制代码
  1. #include <QApplication>
  2. #include "finddialog.h"
  3. int main(int argc, char *argv[])
  4. {
  5. QApplication app(argc, argv);
  6. FindDialog *dialog = new FindDialog;
  7. dialog->show();
  8. return app.exec();
  9. }
复制代码

最新评论

小黑屋|在路上 ( 蜀ICP备15035742号-1 

;

GMT+8, 2025-7-8 05:48

Copyright 2015-2025 djqfx

返回顶部