博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
查找对话框实现
阅读量:7042 次
发布时间:2019-06-28

本文共 2984 字,大约阅读时间需要 9 分钟。

finddialog.h
 
InBlock.gif
/**************************************************************************** 
InBlock.gif** 
InBlock.gif** File : finddialog.h 
InBlock.gif** 
InBlock.gif****************************************************************************/
 

InBlock.gif 

InBlock.gif#ifndef _FINDDIALOG_H_ 

InBlock.gif#define _FINDDIALOG_H_ 

InBlock.gif 

InBlock.gif#include <QDialog> 

InBlock.gif 

InBlock.gif
//类前向声明 

InBlock.gif
class QLabel; 

InBlock.gif
class QLineEdit; 

InBlock.gif
class QCheckBox; 

InBlock.gif
class QPushButton; 

InBlock.gif 

InBlock.gif
class FindDialog:
public QDialog 

InBlock.gif

InBlock.gif  Q_OBJECT 

InBlock.gif
public

InBlock.gif  FindDialog(QWidget *parent=0); 

InBlock.gifsignals: 

InBlock.gif  
void findNext(
const QString &str,Qt::CaseSensitivity cs); 

InBlock.gif  
void findPrevious(
const QString &str,Qt::CaseSensitivity cs); 

InBlock.gif
private slots: 

InBlock.gif  
void findClicked();
//处理查找按钮单击事件 

InBlock.gif  
void enableFindButton(
const QString &text);
//开启查找按钮 

InBlock.gif
private

InBlock.gif  QLabel *label; 

InBlock.gif  QLineEdit *lineEdit; 

InBlock.gif  QCheckBox *caseCheckBox; 

InBlock.gif  QCheckBox *backwardCheckBox; 

InBlock.gif  QPushButton *findButton; 

InBlock.gif  QPushButton *closeButton; 

InBlock.gif}; 

InBlock.gif#endif 
// !_FINDDIALOG_H_ 

 
finddialog.cpp:
 
InBlock.gif
/**************************************************************************** 
InBlock.gif** 
InBlock.gif** File : finddialog.cpp 
InBlock.gif** 
InBlock.gif****************************************************************************/
 

InBlock.gif#include <QtGui> 

InBlock.gif#include 
"finddialog.h" 

InBlock.gif 

InBlock.gifFindDialog::FindDialog(QWidget *parent) 

InBlock.gif  :QDialog(parent) 

InBlock.gif

InBlock.gif  label=
new QLabel(tr(
"Find &what")); 

InBlock.gif  lineEdit=
new QLineEdit; 

InBlock.gif  label->setBuddy(lineEdit); 

InBlock.gif    

InBlock.gif  caseCheckBox=
new QCheckBox(tr(
"Match &case")); 

InBlock.gif  backwardCheckBox=
new QCheckBox(tr(
"Search &backward")); 

InBlock.gif    

InBlock.gif  findButton=
new QPushButton(tr(
"&Find")); 

InBlock.gif  findButton->setDefault(
true); 

InBlock.gif  findButton->setEnabled(
false); 

InBlock.gif    

InBlock.gif  closeButton=
new QPushButton(tr(
"Close")); 

InBlock.gif    

InBlock.gif  connect(lineEdit,SIGNAL(textChanged(
const QString&)), 

InBlock.gif    
this,SLOT(enableFindButton(
const QString&))); 

InBlock.gif  connect(closeButton,SIGNAL(clicked()),
this,SLOT(close())); 

InBlock.gif  connect(findButton,SIGNAL(clicked()),
this,SLOT(findClicked())); 

InBlock.gif    

InBlock.gif  QHBoxLayout *leftTopLayout=
new QHBoxLayout; 

InBlock.gif  leftTopLayout->addWidget(label); 

InBlock.gif  leftTopLayout->addWidget(lineEdit); 

InBlock.gif    

InBlock.gif  QVBoxLayout *leftLayout=
new QVBoxLayout; 

InBlock.gif  leftLayout->addLayout(leftTopLayout); 

InBlock.gif  leftLayout->addWidget(caseCheckBox); 

InBlock.gif  leftLayout->addWidget(backwardCheckBox); 

InBlock.gif    

InBlock.gif  QVBoxLayout *rightLayout=
new QVBoxLayout; 

InBlock.gif  rightLayout->addWidget(findButton); 

InBlock.gif  rightLayout->addWidget(closeButton); 

InBlock.gif  rightLayout->addStretch(); 

InBlock.gif    

InBlock.gif  QHBoxLayout *mainLayout=
new QHBoxLayout; 

InBlock.gif  mainLayout->addLayout(leftLayout); 

InBlock.gif  mainLayout->addLayout(rightLayout); 

InBlock.gif    

InBlock.gif  setLayout(mainLayout);    

InBlock.gif  setWindowTitle(tr(
"Find Dialog")); 

InBlock.gif  setFixedHeight(sizeHint().height()); 

InBlock.gif

InBlock.gif 

InBlock.gif
void FindDialog::enableFindButton(
const QString &text) 

InBlock.gif

InBlock.gif  findButton->setEnabled(!text.isEmpty()); 

InBlock.gif

InBlock.gif 

InBlock.gif
void FindDialog::findClicked() 

InBlock.gif

InBlock.gif  QString text=lineEdit->text(); 

InBlock.gif    

InBlock.gif  Qt::CaseSensitivity cs=caseCheckBox->isChecked()?Qt::CaseSensitive:Qt::CaseInsensitive; 

InBlock.gif    

InBlock.gif  
if(backwardCheckBox->isChecked()) 

InBlock.gif  { 

InBlock.gif    emit findPrevious(text,cs);
//emit 发射信号 

InBlock.gif  }
else

InBlock.gif    emit findNext(text,cs); 

InBlock.gif  } 

InBlock.gif

 
 
主文件测试findmain.cpp
 
InBlock.gif#include <QApplication> 

InBlock.gif 

InBlock.gif#include 
"finddialog.h" 

InBlock.gif 

InBlock.gif
int main(
int argc,
char* argv[]) 

InBlock.gif

InBlock.gif  QApplication app(argc,argv); 

InBlock.gif  FindDialog *findDlg=
new FindDialog; 

InBlock.gif  findDlg->show(); 

InBlock.gif  
return app.exec(); 

InBlock.gif

 
 
截图:
 
本文转自 xcf007 51CTO博客,原文链接:http://blog.51cto.com/xcf007/108338,如需转载请自行联系原作者
你可能感兴趣的文章
codeforces 961B Lecture Sleep
查看>>
2016年4月18日
查看>>
winform 一个点击事件触发另一个点击事件
查看>>
UIView中的坐标转换
查看>>
【二分答案+单调队列】寻找段落
查看>>
深入理解PHP内核(九)变量及数据类型-静态变量
查看>>
浅谈数据库联合查询
查看>>
button disabled置灰的一个小例子,自己用
查看>>
关于empty()返回Fatal error: Can't use function return value in write context的错误问题
查看>>
为什么有了uwsgi还要nginx这个“前端”服务器
查看>>
MySQL 1130 - Host 127.0.0.1 is not allowed to connect to this MySQL server
查看>>
条件判断
查看>>
基于Odoo框架的开源在线客服系统
查看>>
mysql查看所有存储过程查询
查看>>
我的友情链接
查看>>
Java BufferString
查看>>
Android笔记——Socket通信实现简单聊天室
查看>>
js修改onclick事件的四种方法
查看>>
我的友情链接
查看>>
linux文件管理必会知识
查看>>