<!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>-->//finddialog.h
#ifndefFINDDIALOG_H
#defineFINDDIALOG_H
#include<QDialog>
classQCheckBox;
classQLabel;
classQLineEdit;
classQPushButton;
classFindDialog:publicQDialog
{
Q_OBJECT
public:
FindDialog(QWidget*parent=0);
signals://声明信号
voidfindNext(constQString&str,Qt::CaseSensitivitycs);
voidfindPrev(constQString&str,Qt::CaseSensitivitycs);
privateslots://声明槽
voidfindClicked();
voidenableFindButton(constQString&str);
private:
QLabel*lable;
QLineEdit*lineEdit;
QCheckBox*caseCheckBox;
QCheckBox*backwardCheckBox;
QPushButton*findBtn;
QPushButton*closeBtn;
};
#endif
//finddialog.cpp
#include<QtGui>
#include"finddialog.h"
FindDialog::FindDialog(QWidget*parent):QDialog(parent)
{
this->lable=newQLabel(tr("Find&what:"),this);
this->lineEdit=newQLineEdit(this);
lable->setBuddy(lineEdit);
caseCheckBox=newQCheckBox(tr("Match&case"),this);
backwardCheckBox=newQCheckBox(tr("Search&backward"),this);
findBtn=newQPushButton(tr("&Find"),this);
findBtn->setDefault(true);
findBtn->setEnabled(false);
closeBtn=newQPushButton(tr("Close"),this);
QObject::connect(lineEdit,SIGNAL(textChanged(constQString&)),this,SLOT(enableFindButton(constQString&)));
QObject::connect(findBtn,SIGNAL(clicked()),this,SLOT(findClicked()));
QObject::connect(closeBtn,SIGNAL(clicked()),this,SLOT(close()));
QHBoxLayout*topLeftLayout=newQHBoxLayout;
topLeftLayout->addWidget(lable);
topLeftLayout->addWidget(lineEdit);
QVBoxLayout*leftLayout=newQVBoxLayout;
leftLayout->addLayout(topLeftLayout);
leftLayout->addWidget(caseCheckBox);
leftLayout->addWidget(backwardCheckBox);
QVBoxLayout*rightLayout=newQVBoxLayout;
rightLayout->addWidget(findBtn);
rightLayout->addWidget(closeBtn);
rightLayout->addStretch(1);
QHBoxLayout*mainLayout=newQHBoxLayout(this);
mainLayout->setMargin(11);
mainLayout->setSpacing(5);
mainLayout->addLayout(leftLayout);
mainLayout->addLayout(rightLayout);
this->setWindowTitle(tr("Find"));
this->setFixedHeight(sizeHint().height());
}
voidFindDialog::findClicked()
{
QStringtext=lineEdit->text();
Qt::CaseSensitivitycs=caseCheckBox->isChecked()?Qt::CaseSensitive:Qt::CaseInsensitive;
if(backwardCheckBox->isChecked())
emitfindPrev(text,cs);//发射"向前搜索信号"
else
emitfindNext(text,cs);//发射"向后搜索信号"
}
voidFindDialog::enableFindButton(constQString&str)
{
findBtn->setEnabled(!str.isEmpty());
}
//main.cpp
#include<QApplication>
#include"finddialog.h"
intmain(intargc,char*argv[])
{
QApplicationapp(argc,argv);
FindDialog*dialog=newFindDialog;
dialog->show();
returnapp.exec();
}
#ifndefFINDDIALOG_H
#defineFINDDIALOG_H
#include<QDialog>
classQCheckBox;
classQLabel;
classQLineEdit;
classQPushButton;
classFindDialog:publicQDialog
{
Q_OBJECT
public:
FindDialog(QWidget*parent=0);
signals://声明信号
voidfindNext(constQString&str,Qt::CaseSensitivitycs);
voidfindPrev(constQString&str,Qt::CaseSensitivitycs);
privateslots://声明槽
voidfindClicked();
voidenableFindButton(constQString&str);
private:
QLabel*lable;
QLineEdit*lineEdit;
QCheckBox*caseCheckBox;
QCheckBox*backwardCheckBox;
QPushButton*findBtn;
QPushButton*closeBtn;
};
#endif
//finddialog.cpp
#include<QtGui>
#include"finddialog.h"
FindDialog::FindDialog(QWidget*parent):QDialog(parent)
{
this->lable=newQLabel(tr("Find&what:"),this);
this->lineEdit=newQLineEdit(this);
lable->setBuddy(lineEdit);
caseCheckBox=newQCheckBox(tr("Match&case"),this);
backwardCheckBox=newQCheckBox(tr("Search&backward"),this);
findBtn=newQPushButton(tr("&Find"),this);
findBtn->setDefault(true);
findBtn->setEnabled(false);
closeBtn=newQPushButton(tr("Close"),this);
QObject::connect(lineEdit,SIGNAL(textChanged(constQString&)),this,SLOT(enableFindButton(constQString&)));
QObject::connect(findBtn,SIGNAL(clicked()),this,SLOT(findClicked()));
QObject::connect(closeBtn,SIGNAL(clicked()),this,SLOT(close()));
QHBoxLayout*topLeftLayout=newQHBoxLayout;
topLeftLayout->addWidget(lable);
topLeftLayout->addWidget(lineEdit);
QVBoxLayout*leftLayout=newQVBoxLayout;
leftLayout->addLayout(topLeftLayout);
leftLayout->addWidget(caseCheckBox);
leftLayout->addWidget(backwardCheckBox);
QVBoxLayout*rightLayout=newQVBoxLayout;
rightLayout->addWidget(findBtn);
rightLayout->addWidget(closeBtn);
rightLayout->addStretch(1);
QHBoxLayout*mainLayout=newQHBoxLayout(this);
mainLayout->setMargin(11);
mainLayout->setSpacing(5);
mainLayout->addLayout(leftLayout);
mainLayout->addLayout(rightLayout);
this->setWindowTitle(tr("Find"));
this->setFixedHeight(sizeHint().height());
}
voidFindDialog::findClicked()
{
QStringtext=lineEdit->text();
Qt::CaseSensitivitycs=caseCheckBox->isChecked()?Qt::CaseSensitive:Qt::CaseInsensitive;
if(backwardCheckBox->isChecked())
emitfindPrev(text,cs);//发射"向前搜索信号"
else
emitfindNext(text,cs);//发射"向后搜索信号"
}
voidFindDialog::enableFindButton(constQString&str)
{
findBtn->setEnabled(!str.isEmpty());
}
//main.cpp
#include<QApplication>
#include"finddialog.h"
intmain(intargc,char*argv[])
{
QApplicationapp(argc,argv);
FindDialog*dialog=newFindDialog;
dialog->show();
returnapp.exec();
}