1. 手动创建对话框
1) finddialog.h头文件:
#ifndef FINDDIALOG_H
#define FINDDIALOG_H
#include <QDialog.h>
#include <qlabel.h>
#include <qcheckbox.h>
#include <qlineedit.h>
#include <qpushbutton.h>
#include <QHBoxLayout>
#include <QVBoxLayout>
#include <QMessageBox>
class QCheckBox;
class QLabel;
class QLineEdit;
class QPushButton;
class FindDialog:public QDialog
{
//对于所有定义了信号和槽的类,在类定义开始处的Q_OBJECT宏都是必需的
Q_OBJECT
public:
FindDialog(QWidget *parent = 0);
public:
void myfindNext(const QString &str, Qt::CaseSensitivity cs);
void myfindPrevious(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
2)finddialog.cpp源文件
#include "finddialog.h"
FindDialog::FindDialog(QWidget *parent) :
QDialog(parent)
{
//在字符串周围的tr()函数调用是把它们翻译成其他语言的标记(这是一个好习惯)
label = new QLabel( tr( "Find &what" ) );
lineEdit = new QLineEdit;
//标签伙伴:一个窗口部件,当你按下Alt+w时,焦点就会移动到这个行编辑器(该标签的伙伴)上
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" ) );
//当文本改变时候,使find按钮有效
connect( lineEdit, SIGNAL( textChanged( const QString & ) ),
this, SLOT( enableFindButton( const QString & ) ) );
//当find按钮按下时候,处罚