Qt 创建对话框
2015-11-20 18:42
447 查看
#ifndef FINDDIALOG_H #define FINDDIALOG_H #include <QDialog> class QCheckBox; class QLabel; class QLineEdit; class QPushButton; class FindDialog : public QDialog { Q_OBJECT //对于所有定义了信号和槽的类,在定义开始处的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
#include <QLabel> #include <QCheckBox> #include <QPushButton> #include <QHBoxLayout> #include <QVBoxLayout> #include <QLineEdit> #include "finddialog.h" FindDialog::FindDialog(QWidget *parent) : QDialog(parent) { label = new QLabel(tr("Find &what:"));//快捷键Alt+W 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()); }
#include <QApplication> #include "finddialog.h" int main(int argc, char *argv[]) { QApplication app(argc, argv); FindDialog *dialog = new FindDialog; dialog->show(); return app.exec(); }
程序运行截图:
相关文章推荐
- QT中的各种MessageBox
- QT程序图标和窗口图标
- QT.Debug设置断点无效
- qt QSharedMemory 用法
- qt 打印信息显示行号
- Qt moc 功能和限制
- Qt之右键菜单实现
- QT创建透明窗体
- Qt Creator快捷键
- Qt Creator快捷键
- Ⅰ.2.9.如何测试支持国际化的Qt AUT
- 使用VS开发Qt项目时编译速度慢的问题解决
- Qt共享内存实现进程间通信(QSharedMemory)
- QTP自动化测试之VBScript对象
- QTP自动化测试之VBScript基础(下)
- QTP自动化测试之VBScript基础(上)
- Qt 实现excel加法
- Qt 查询文档
- Qt的QTabelWidget
- MQTT常见问题