C++ Exercises(三)

<!--<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();
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值