zoukankan      html  css  js  c++  java
  • Find Dialog

    FindDialog.h:

    #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);/**FindDialog类的构造函数,parent 参数指定了它的父窗口部件,默认值是空指针, 则没有父对象*/
    signals:
        void findNext(const QString &str, Qt::CaseSensitivity cs);
        void findPrevious(const QString &str, Qt::CaseSensitivity cs);/*signals部分声明了当用户单击Find按钮时对话框所发射的两个信号
    
                                                                       Qt::sensitivity是一个枚举类型,他有Qt::CaseInsensitive
    
                                                                        和 Qt::CaseSensitive两个取值*/
    private slots:
        void findClicked();
        void enableFindButton(const QString &text);
    
    private:
        QLabel *label;
        QLineEdit *lineEdit;
        QCheckBox *caseCheckBox;
        QCheckBox *backwardCheckBox;
        QPushButton *findButton;
        QPushButton *closeButton;
    
    
    };
    
    #endif // FINDDIALOG_H
    

      FindDialog.cpp:

     1 #include <QtGui>
     2 
     3 #include "FindDialog.h"
     4 
     5 FindDialog::FindDialog(QWidget *parent)/*FindDialog 的构造函数*/
     6     : QDialog(parent)
     7 {
     8     label = new QLabel(tr("Find &what:"));
     9     lineEdit = new QLineEdit;
    10     label->setBuddy(lineEdit);
    11 
    12     caseCheckBox = new QCheckBox(tr("Match &case"));
    13     backwardCheckBox = new QCheckBox(tr("Search &backward"));
    14 
    15     findButton = new QPushButton(tr("&Find"));
    16     findButton->setDefault(true);
    17     findButton->setEnabled(false);
    18 
    19     closeButton = new QPushButton(tr("Close"));
    20 
    21     connect(lineEdit,SIGNAL(textChanged(const QString& )),
    22             this,SLOT(enableFindButton(const QString& )));
    23     connect(findButton,SIGNAL(clicked()),
    24             this, SLOT(findClicked()));
    25     connect(closeButton,SIGNAL(clicked()),
    26             this, SLOT(close()));
    27 
    28     QHBoxLayout *topLeftLayout = new QHBoxLayout;
    29     topLeftLayout->addWidget(label);
    30     topLeftLayout->addWidget(lineEdit);
    31 
    32     QVBoxLayout *leftLayout = new QVBoxLayout;
    33     leftLayout->addLayout(topLeftLayout);
    34     leftLayout->addWidget(caseCheckBox);
    35     leftLayout->addWidget(backwardCheckBox);
    36 
    37     QVBoxLayout *rightLayout = new QVBoxLayout;
    38     rightLayout->addWidget(findButton);
    39     rightLayout->addWidget(closeButton);
    40     rightLayout->addStretch();
    41 
    42     QHBoxLayout *mainLayout = new QHBoxLayout;
    43     mainLayout->addLayout(leftLayout);
    44     mainLayout->addLayout(rightLayout);
    45     setLayout(mainLayout);
    46 
    47     setWindowTitle(tr("Find"));
    48     setFixedHeight(sizeHint().height());
    49 
    50 }
    51 
    52 void FindDialog::findClicked()
    53 {
    54     QString text = lineEdit->text();
    55     Qt::CaseSensitivity cs =
    56             caseCheckBox->isChecked() ? Qt::CaseSensitive : Qt::CaseInsensitive;
    57     if(backwardCheckBox->isChecked()){
    58         emit findPrevious(text,cs);
    59     }
    60     else {
    61         emit findNext(text,cs);
    62     }
    63 
    64 }
    65 
    66 void FindDialog::enableFindButton(const QString &text)
    67 {
    68     findButton->setEnabled(!text.isEmpty());
    69 }
  • 相关阅读:
    python---自定义分页类
    python---正则中的(?P<name>group)
    学习windows编程 day6 之模拟记事本
    学习windows编程 day5 之按键消息
    some websit
    android/iphone/windows/linux声波通讯库
    无线点餐系统
    android实现弧形进度表盘效果
    与Sevice实现双向通信
    android code bbs for developer
  • 原文地址:https://www.cnblogs.com/yongjiuzhizhen/p/3740561.html
Copyright © 2011-2022 走看看