当前位置: 代码迷 >> QT开发 >> 关于QT的emit的一点疑问,该怎么解决
  详细解决方案

关于QT的emit的一点疑问,该怎么解决

热度:28   发布时间:2016-04-25 03:29:26.0
关于QT的emit的一点疑问
我是根据C++ QT4编程  那本书学的  一开始就用了emit

#ifndef FINDDIALOG_H 
#define FINDDIALOG_H 
 
#include <QtGui/QDialog> 
 
class QCheckBox; 
class QLabel; 
class QLineEdit; 
class QPushButton; 
 
class FindDialog : public QDialog 

        Q_OBJECT 
 
public: 
        FindDialog(QWidget *parent = 0); 
        ~FindDialog(); 
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 // FINDDIALOG_H

这是.h文件


#include <QtGui> 
#include "finddialog.h" 
 
FindDialog::FindDialog(QWidget *parent) 
        : QDialog(parent) 

        label = new QLabel(tr("Find &what:")); 
        lineEdit = new QLineEdit; 
        label->setBuddy(lineEdit); 
 
        caseCheckBox = new QCheckBox(tr("Match &case")); 
        backwardCheckBox = new QCheckBox(tr("Search &backford")); 
 
        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()); 

 
FindDialog::~FindDialog() 

 

 
void FindDialog::findClicked() 

        QString text = lineEdit->text(); 
        Qt::CaseSensitivity cs = caseCheckBox->isChecked() ? Qt::CaseInsensitive : Qt::CaseSensitive; 
        if(backwardCheckBox->isChecked()) {