#include "finddialog.h"
#include<QHBoxLayout>
#include<QVBoxLayout>
FindDialog::FindDialog(QWidget *parent)
: QDialog(parent)
{
mLabel=new QLabel(tr("Find &What"));
mLineEdit=new QLineEdit;
mLabel->setBuddy(mLineEdit);//伙伴
mCaseMath=new QCheckBox(tr("Math &Case"));
mBackWard=new QCheckBox(tr("Serach &BackWard"));
mFindBtn=new QPushButton(tr("FIND"));
mFindBtn->setEnabled(false);
mCloseBtn=new QPushButton(tr("CLOSE"));
//绑定信号与槽
QObject::connect(mLineEdit,SIGNAL(textChanged(QString)),this,SLOT(onEnableFindBtn(QStirng)));
// QObject::connect(mLineEdit,SIGNAL(textChanged(QString)),this,SLOT(close()));
QObject::connect(mFindBtn,SIGNAL(clicked(bool)),this,SLOT(onFindClicked()));
QObject::connect(mCloseBtn,SIGNAL(clicked(bool)),this,SLOT(close()));
QHBoxLayout *LeftToplayout=new QHBoxLayout;
LeftToplayout->addWidget(mLabel);
LeftToplayout->addWidget(mLineEdit);
QVBoxLayout *LeftBottomlayout=new QVBoxLayout;
LeftBottomlayout->addLayout(LeftToplayout);
LeftBottomlayout->addWidget(mCaseMath);
LeftBottomlayout->addWidget(mBackWard);
QVBoxLayout *rightlayout=new QVBoxLayout;
rightlayout->addWidget(mFindBtn);
rightlayout->addWidget(mCloseBtn);
QHBoxLayout *mainLayout=new QHBoxLayout;
mainLayout->addLayout(LeftBottomlayout);
mainLayout->addLayout(rightlayout);
setWindowTitle(tr("Find"));
setLayout(mainLayout);
}
FindDialog::~FindDialog()
{
}
void FindDialog::onFindClicked()
{
QString text=mLineEdit->text(); //内容
Qt::CaseSensitivity cs=mCaseMath->isChecked()?Qt::CaseSensitive:Qt::CaseInsensitive;
if(mBackWard->isChecked())
{
emit findPrevious(text,cs);
}
else
{
emit findNext(text,cs);
}
}
void FindDialog::onEnableFindBtn(const QString &text)
{
mFindBtn->setEnabled(!text.isEmpty());
}
效果图: