嵌入式爱好者

查看: 10593|回复: 6

QT 学习记录 一(FINDDIALOG)

[复制链接]

153

主题

3910

帖子

4207

积分

AM5718通行证AM335x通行证i.MX6UL通行证i.MX RT通行证i.MX6Q通行证XX18通行证TCU通行证FCU1401通行证FCU1301通行证FCU11xx通行证

扫一扫,手机访问本帖
发表于 2012-11-30 15:29:52 | 显示全部楼层 |阅读模式
本帖最后由 飞凌-unix 于 2012-11-30 15:33 编辑
  1. #ifndef FINDDIALOG_H
  2. #define FINDDIALOG_H
  3. #include<QDialog>
  4. class QCheckBox;
  5. class QLabel;
  6. class QLineEdit;
  7. class QPushButton;
  8. /*****************************************************
  9. 声明一些用于这个对话框实现中的Qt类
  10. *****************************************************/
  11. class FindDialog :public QDialog
  12. {
  13.     Q_OBJECT
  14. public:
  15.     FindDialog(QWidget *parent =0);
  16. //FindDialog的构造函数是一个典型的Qt窗口部件类的定义方式。parent参数指定了它的父窗口部件。
  17. signals:
  18.     void findNext(const QString &str,Qt::CaseSensitivity cs);
  19.     void findPrevious(const QString &str,Qt::CaseSensitivity cs);
  20. //signals声明了当用户单击Find按钮时对话框所发射的两个信号。
  21. private:
  22.     QLabel *label;
  23.     QLineEdit *lineEdit;
  24.     QCheckBox *caseCheckBox;
  25.     QCheckBox *backwardCheckBox;
  26.     QPushButton *findButton;
  27.     QPushButton *closeButton;
  28. };
  29. #endif // FINDDIALOG_H
复制代码
技术支持电话:0312-3119192
技术支持邮箱:Linux@forlinx.com
回复

使用道具 举报

153

主题

3910

帖子

4207

积分

AM5718通行证AM335x通行证i.MX6UL通行证i.MX RT通行证i.MX6Q通行证XX18通行证TCU通行证FCU1401通行证FCU1301通行证FCU11xx通行证

 楼主| 发表于 2012-11-30 15:32:36 | 显示全部楼层
  1. #include<QtGui>
  2. #include"finddialog.h"
  3. FindDialog ::FindDialog(QWidget*parent):QDialog(parent)
  4. {   
  5.     //parent参数传递给了基类的构造函数
  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("serch &backward"));
  11.     findButton=new QPushButton(tr("&Find"));
  12.     findButton->setDefault(true);
  13.     findButton->setEnabled(false);

  14.     closeButton=new QPushButton(tr("close"));
  15.    
  16.     connect(lineEdit,SIGNAL(textChanged(const QString &)),this,SLOT(enableFindButton(const QString &)));
  17.     connect(findButton,SIGNAL(clicked()),this,SLOT(findClicked()));
  18.     connect(closeButton,SIGNAL(clicked()),this,SLOT(close()));

  19.     QHBoxLayout *topLeftLayout =new QHBoxLayout;
  20.     topLeftLayout->addWidget(label);
  21.     topLeftLayout->addWidget(lineEdit);

  22.     QVBoxLayout *leftLayout=new QVBoxLayout;
  23.     leftLayout->addLayout(topLeftLayout);
  24.     leftLayout->addWidget(caseCheckBox);
  25.     leftLayout->addWidget(backwardCheckBox);

  26.     QVBoxLayout *rightLayout=new QVBoxLayout;
  27.     rightLayout->addWidget(findButton);
  28.     rightLayout->addWidget(closeButton);
  29.     rightLayout->addStretch();

  30.     QHBoxLayout *mainLayout=new QHBoxLayout;
  31.     mainLayout->addLayout(leftLayout);
  32.     mainLayout->addLayout(rightLayout);
  33.     setLayout(mainLayout);
  34.     setWindowTitle(tr("Find"));
  35.     setFixedHeight(sizeHint().height());
  36. }
  37. void FindDialog::findClicked()
  38. {
  39.     QString text =lineEdit->text();
  40.     Qt::CaseSensitivity cs=caseCheckBox->isChecked()?Qt::CaseSensitive:Qt::CaseInsensitive;
  41.     if(backwardCheckBox->isChecked())
  42.     {
  43.     emit findPrevious(text,cs);
  44.     }
  45.     else
  46.     {
  47.     emit findNext(text,cs);
  48.     }
  49. }
  50. void FindDialog ::enableFindButton(const QString &text)
  51. {
  52.     findButton->setEnabled(!text.isEmpty());
  53. }
复制代码
技术支持电话:0312-3119192
技术支持邮箱:Linux@forlinx.com
回复 支持 反对

使用道具 举报

153

主题

3910

帖子

4207

积分

AM5718通行证AM335x通行证i.MX6UL通行证i.MX RT通行证i.MX6Q通行证XX18通行证TCU通行证FCU1401通行证FCU1301通行证FCU11xx通行证

 楼主| 发表于 2012-11-30 15:32:52 | 显示全部楼层
  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. }
复制代码
技术支持电话:0312-3119192
技术支持邮箱:Linux@forlinx.com
回复 支持 反对

使用道具 举报

153

主题

3910

帖子

4207

积分

AM5718通行证AM335x通行证i.MX6UL通行证i.MX RT通行证i.MX6Q通行证XX18通行证TCU通行证FCU1401通行证FCU1301通行证FCU11xx通行证

 楼主| 发表于 2012-11-30 15:35:00 | 显示全部楼层
今天写了一个QT程序大家一起看看代码,看看问题,分享下
技术支持电话:0312-3119192
技术支持邮箱:Linux@forlinx.com
回复 支持 反对

使用道具 举报

15

主题

275

帖子

754

积分

发表于 2012-12-6 08:20:01 | 显示全部楼层
学习。
该会员没有填写今日想说内容.
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋| 飞凌嵌入式 ( 冀ICP备12004394号-1 )

GMT+8, 2024-12-26 09:20

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表