zoukankan      html  css  js  c++  java
  • QT学习笔记3

    对话框

       新建了一个对话框,在新建项目选择类型时是Dialog即可。

       添加的代码如下,注意QCheckBox 并没有添加头文件定义,只是加了类的前向声明。因为我们仅仅使用的是指针,并不涉及到这些类的函数,因此并不需要include它们的头文件——当然,你想直接引入头文件也可以,不过那样的话编译速度就会慢一些。不过实验发现 还是需要添加头文件

     1 #ifndef FINDDIALOG_H
     2 #define FINDDIALOG_H
     3 
     4 #include <QtGui/QDialog>
     5 #include "ui_finddialog.h"
     6 
     7 class QCheckBox; 
     8 class QLabel; 
     9 class QLineEdit; 
    10 class QPushButton; 
    11 
    12 class FindDialog : public QDialog
    13 {
    14     Q_OBJECT
    15 
    16 public:
    17     FindDialog(QWidget *parent = 0, Qt::WFlags flags = 0);
    18     ~FindDialog();
    19 signals:
    20     void findNext(const QString &str,Qt::CaseSensitive cs);
    21     void findPrevious(const QString &str,Qt::CaseSensitive cs);
    22 private slots:
    23     void findClicked();
    24     void enableFindButton(const QString &text);
    25 private:
    26     Ui::FindDialogClass ui;
    27     QLabel *label;
    28     QLineEdit *lineEdit;
    29     QCheckBox *caseCheckBox;
    30     QCheckBox *backwardCheckBox;
    31     QPushButton *findButton;
    32     QPushButton *closeButton;
    33 };
    34 
    35 #endif // FINDDIALOG_H

    cpp文件代码:

    1 字符串用tr()函数进行转换。

    2 信号和槽函数可以自己定义。

       QObject::connect(lineEdit,SIGNAL(textChanged(const QString&)),this,SLOT(enableFindButton(const QString& )));

    这句话中,槽函数就是自己定义的,而且还可以获取信号中的参数,也就是进行参数传递
    当然也可以自己定义信号:
    signals:
      void findNext(const QString &str,Qt::CaseSensitive cs);自己定义信号,同时可以设置传入的参数
     通过emit findNext (text,cs);进行发射信号
     1 FindDialog::FindDialog(QWidget *parent, Qt::WFlags flags)
     2     : QDialog(parent, flags)
     3 {
     4     ui.setupUi(this);
     5     label=new QLabel(tr("Find &what:"));
     6     lineEdit=new QLineEdit;
     7     label->setBuddy(lineEdit);
     8 
     9     caseCheckBox=new QCheckBox(tr("Match &chase"));
    10     backwardCheckBox=new QCheckBox(tr("Search &backford"));
    11 
    12     findButton=new QPushButton(tr("&Find"));
    13     findButton->setDefault(true);
    14     findButton->setEnabled(false);
    15     closeButton=new QPushButton(tr("Close"));
    16 
    17     QObject::connect(lineEdit,SIGNAL(textChanged(const QString&)),this,SLOT(enableFindButton(const QString& )));
    18     connect(findButton,SIGNAL(clicked()),this,SLOT(findClicked()));
    19     connect(closeButton,SIGNAL(clicked()),this,SLOT(close()));
    20 
    21     QHBoxLayout *topLeftLayout=new QHBoxLayout;
    22     topLeftLayout->addWidget(label);
    23     topLeftLayout->addWidget(lineEdit);
    24 
    25     QVBoxLayout *leftLayout=new QVBoxLayout;
    26     leftLayout->addLayout(topLeftLayout);
    27     leftLayout->addWidget(caseCheckBox);
    28     leftLayout->addWidget(backwardCheckBox);
    29 
    30     QVBoxLayout *rightLayout=new QVBoxLayout;
    31     rightLayout->addWidget(findButton);
    32     rightLayout->addWidget(closeButton);
    33     rightLayout->addStretch();
    34     
    35     QHBoxLayout *mainLayout=new QHBoxLayout;
    36     mainLayout->addLayout(leftLayout);
    37     mainLayout->addLayout(rightLayout);
    38 
    39     this->setLayout(mainLayout);
    40     this->setWindowTitle(tr(("Find")));
    41     setFixedHeight(sizeHint().height());
    42     
    43 }
    44 
    45 FindDialog::~FindDialog()
    46 {
    47 
    48 }
    49 
    50 
    51 void FindDialog::findClicked()
    52 {
    53    QString text=lineEdit->text();
    54    Qt::CaseSensitivity cs=caseCheckBox->isChecked()?Qt::CaseInsensitive:Qt::CaseSensitive;
    55    if (backwardCheckBox->isChecked())
    56    {
    57        emit findPrevious(text,cs);
    58    }else emit findNext(text,cs);
    59 }
    60 
    61 void FindDialog::enableFindButton(const QString &text)
    62 {
    63    findButton->setEnabled(!text.isEmpty());
    64 }

    运行结果

  • 相关阅读:
    鸟哥的linux私房菜学习-(八)Linux 文件与目录管理
    我的作品
    聊聊软件测试面试的一些事
    如何做一名专业的软件测试工程师
    测试Leader应该做哪些事
    软件测试工程师的岗位职责
    一个完整的性能测试流程
    做接口测试需要哪些技能
    软件质量保障体系建设
    性能测试常见瓶颈分析及调优方法
  • 原文地址:https://www.cnblogs.com/love6tao/p/5196601.html
Copyright © 2011-2022 走看看