查找对话框实现

简介:
finddialog.h
 
/**************************************************************************** 
** 
** File : finddialog.h 
** 
****************************************************************************/
 
 
#ifndef _FINDDIALOG_H_ 
#define _FINDDIALOG_H_ 
 
#include <QDialog> 
 
//类前向声明 
class QLabel; 
class QLineEdit; 
class QCheckBox; 
class QPushButton; 
 
class FindDialog: public QDialog 

  Q_OBJECT 
public
  FindDialog(QWidget *parent=0); 
signals: 
   void findNext( const QString &str,Qt::CaseSensitivity cs); 
   void findPrevious( 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_ 
 
finddialog.cpp:
 
/**************************************************************************** 
** 
** File : finddialog.cpp 
** 
****************************************************************************/
 
#include <QtGui> 
#include  "finddialog.h" 
 
FindDialog::FindDialog(QWidget *parent) 
  :QDialog(parent) 

  label= new QLabel(tr( "Find &what")); 
  lineEdit= new QLineEdit; 
  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")); 
    
  connect(lineEdit,SIGNAL(textChanged( const QString&)), 
     this,SLOT(enableFindButton( const QString&))); 
  connect(closeButton,SIGNAL(clicked()), this,SLOT(close())); 
  connect(findButton,SIGNAL(clicked()), this,SLOT(findClicked())); 
    
  QHBoxLayout *leftTopLayout= new QHBoxLayout; 
  leftTopLayout->addWidget(label); 
  leftTopLayout->addWidget(lineEdit); 
    
  QVBoxLayout *leftLayout= new QVBoxLayout; 
  leftLayout->addLayout(leftTopLayout); 
  leftLayout->addWidget(caseCheckBox); 
  leftLayout->addWidget(backwardCheckBox); 
    
  QVBoxLayout *rightLayout= new QVBoxLayout; 
  rightLayout->addWidget(findButton); 
  rightLayout->addWidget(closeButton); 
  rightLayout->addStretch(); 
    
  QHBoxLayout *mainLayout= new QHBoxLayout; 
  mainLayout->addLayout(leftLayout); 
  mainLayout->addLayout(rightLayout); 
    
  setLayout(mainLayout);    
  setWindowTitle(tr( "Find Dialog")); 
  setFixedHeight(sizeHint().height()); 

 
void FindDialog::enableFindButton( const QString &text) 

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

 
void FindDialog::findClicked() 

  QString text=lineEdit->text(); 
    
  Qt::CaseSensitivity cs=caseCheckBox->isChecked()?Qt::CaseSensitive:Qt::CaseInsensitive; 
    
   if(backwardCheckBox->isChecked()) 
  { 
    emit findPrevious(text,cs); //emit 发射信号 
  } else
    emit findNext(text,cs); 
  } 

 
 
主文件测试findmain.cpp
 
#include <QApplication> 
 
#include  "finddialog.h" 
 
int main( int argc, char* argv[]) 

  QApplication app(argc,argv); 
  FindDialog *findDlg= new FindDialog; 
  findDlg->show(); 
   return app.exec(); 

 
 
截图:
 


本文转自 xcf007 51CTO博客,原文链接:http://blog.51cto.com/xcf007/108338,如需转载请自行联系原作者

相关文章
|
3月前
|
Shell
自定义右击菜单,添加指定打开文件方式
自定义右击菜单,添加指定打开文件方式
43 0
Navicate如何全部选中表,点击表,然后移动到右侧,右侧可以选中,实现拖拽
Navicate如何全部选中表,点击表,然后移动到右侧,右侧可以选中,实现拖拽
|
11月前
|
C#
C# “文件选择对话框“ 和 “保存对话框“
C# “文件选择对话框“ 和 “保存对话框“
Axure RP 9查找属性栏位置简单步骤(以文本框举例)
Axure RP 9查找属性栏位置简单步骤(以文本框举例)
2193 0
Axure RP 9查找属性栏位置简单步骤(以文本框举例)