Qt Creator版文件查找对话框

 

 

 

新建find_dialog.ui

 

创建控件

 

一个:Label, Line Edit

 

两个:Check Box

 

两个:Push Button

 

设置属性

 

label 的objectName 设为"label",text 属性设为"&Find What:"

 

line editor 的objectName 设为"lineEdit"

 

第一个Check Box 的objectName 设为"checkBox_matchCase",,text 属性设为"&Match Case"

 

另一个Check Box 的objectName 设为"checkBox_matchCase",,text 属性设为"&Match Case"

 

 

 

第一个Push Button 的objectName 设为"button_find",text 属性设为"&Find"

 

另一个Push Button 的objectName 设为"button_close",text 属性设为"&Close"

 

窗体的objectName 设为"FindDialog",,windowTitle 属性设为"Find"

 

 

 

设置label 的buddy

 

 

布局控件

 

QHBoxLayout layout 包含label,Line Edit

 

QHBoxLayout mainLayout 包含leftLayout,rightLayout

 

QVBoxLayout leftLayout 包含layout,两个Check Box

 

QVBoxLayout rightLayout 包含两个Push Button

 

选中窗体 ->设成横向布局 ->Adjust Size

 

 

保存

 

 

从find_dialog.ui 生成ui_find_dialog.h 加入工程

 

 

加入main.cpp

 

//

// main.cpp

#include <QApplication>

#include <QDialog>

 

#include "ui_find_dialog.h"

 

#pragma comment(lib, "QtCore4.lib") 

#pragma comment(lib, "QtGui4.lib")

 

int main(int argc, char *argv[])

{

    QApplication app(argc, argv);

 

Ui::FindDialog ui;

    QDialog *dialog = new QDialog;

    ui.setupUi(dialog);

 

ui.rightLayout->addStretch();  // 亮点 实现对齐

    dialog->setFixedHeight(dialog->sizeHint().height());  // 亮点 设置适合的高度 不让用户调整,一调界面就会乱掉

dialog->show();

 

    return app.exec();

}

//

 

 

运行

 

 

 

 

加入find_dialog.h

 

//

// find_dialog.h

#ifndef FIND_DIALOG_H

#define FIND_DIALOG_H

 

#include "ui_find_dialog.h"

 

#include <QDialog>

 

// 亮点 多继承

class FindDialog : public QDialog, public Ui::FindDialog  // ? 继承顺序反过来就出错

{

Q_OBJECT

public:

FindDialog();

signals:

void signal_find_next(const QString &, Qt::CaseSensitivity);

void signal_find_previous(const QString &, Qt::CaseSensitivity);

 

private slots:

void setEnable_4_findButton(const QString &);

void findButton_clicked();

 

void find_next(const QString &, Qt::CaseSensitivity);

void find_previous(const QString &, Qt::CaseSensitivity);

};

 

#endif

//

 

 

从find_dialog.h 生成moc_find_dialog.cpp,加入工程

 

 

加入find_dialog.cpp

 

//

// find_dialog.cpp

#include "find_dialog.h"

 

FindDialog::FindDialog()

{

setupUi(this);

 

rightLayout->addStretch();  // 亮点 实现对齐

setFixedHeight(sizeHint().height());  // 亮点 设置适合的高度 不让用户调整,一调界面就会乱掉

 

connect(button_close, SIGNAL(clicked()), this, SLOT(close()));  // 注意:quit() 函数是QApplication 的

connect(lineEdit, SIGNAL(textChanged(const QString &)), SLOT(setEnable_4_findButton(const QString &)));

connect(button_find, SIGNAL(clicked()), this, SLOT(findButton_clicked()));

connect(this, SIGNAL(signal_find_next(const QString &, Qt::CaseSensitivity)), this, SLOT(find_next(const QString &, Qt::CaseSensitivity)));

connect(this, SIGNAL(signal_find_previous(const QString &, Qt::CaseSensitivity)), this, SLOT(find_previous(const QString &, Qt::CaseSensitivity)));

}

 

void FindDialog::setEnable_4_findButton(const QString &text)

{

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

}

 

void FindDialog::findButton_clicked()

{

 

QString text_4_search = lineEdit->text();

 

Qt::CaseSensitivity cs =

checkBox_matchCase->isChecked()? Qt::CaseSensitive : Qt::CaseInsensitive;

 

if (checkBox_Backward->isChecked())

{

// 向后搜索

emit signal_find_previous(text_4_search, cs);

}

else

{

// 向前搜索

emit signal_find_next(text_4_search, cs);

}

}

 

void FindDialog::find_next(const QString &text, Qt::CaseSensitivity cs)

{

}

 

void FindDialog::find_previous(const QString &text, Qt::CaseSensitivity cs)

{

}

 

//

 

 

 

main.cpp 改写成

 

 

//

// main.cpp

#include <QApplication>

#include <QDialog>

 

#include "find_dialog.h"

 

#pragma comment(lib, "QtCore4.lib") 

#pragma comment(lib, "QtGui4.lib")

 

int main(int argc, char *argv[])

{

QApplication app(argc, argv);

FindDialog *dialog = new FindDialog();

 

dialog->show();

 

return app.exec();

}

//

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值