QT-创建对话框

#ifndef FINDDIALOG_H
#define FINDDIALOG_H

#include<QDialog>

//前置声明会告诉C++编译程序类的存在,而不用提供类定义中的所有细节。
class QCheckBox;
class QLabel;
class QLineEdit;
class QPushButton;

//FindDialog 继承 QDialog(对话框)类
class FindDialog : public QDialog{
        Q_OBJECT//对于所有定义了信号和槽的类,在类定义开始处的Q_OBJECT宏都是必需的。
public:
    //构造函数  参数为:QWidget部件类
    FindDialog(QWidget *parent = 0);

    //signals部分声明了当用户点击Find按钮时对话框所发射的两个信号
signals:
    //Qt::CaseSensitivity为枚举型,可取值Qt::CaseSensitive和Qt::CaseInsensitive
    //表示匹配的灵敏度
    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 *backwardCheckBox;
    QCheckBox *caseCheckBox;
    QPushButton *findButton;
    QPushButton *closeButton;

};
#endif // FINDDIALOG_H

上面是头文件

finddialog.h下面是
finddialog.cpp
#include<QPushButton>
#include<QLabel>
#include<QHBoxLayout>
#include<QVBoxLayout>
#include<QCheckBox>
#include<QLineEdit>
#include"finddialog.h"

FindDialog::FindDialog(QWidget *parent)
    :QDialog(parent)
{
    //创建了一个带有快捷键ALT+W的标签
    label = new QLabel(tr("Find &what:"));

    lineEdit = new QLineEdit;

    //设置编辑器作为标签的伙伴。按下标签的快捷键时,lineEdit会接受焦点。
    label->setBuddy(lineEdit);

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

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

    //Alt+F快捷键会激活Find按钮
    findButton = new QPushButton(tr("&Find"));

    //将Find按钮作为对话框的默认按钮。默认按钮就是当用户按下Enter键时能够按下对应的按钮
    findButton->setDefault(true);
    //将Find按钮禁止
    findButton->setEnabled(false);

    closeButton = new QPushButton(tr("Close"));

    //当lineEdit里面的内容发生变化时,会调用本类的enableFindButton函数。
    QObject::connect(lineEdit,SIGNAL(textChanged(const QString&)),this,SLOT(enableFindButton(const QString &)));

    //当点击Find按钮时,会调用本类的findClicked方法.
    QObject::connect(findButton,SIGNAL(clicked()),this,SLOT(findClicked()));

    //当点击Close按钮时,会调用本类或者父类的close方法
    QObject::connect(closeButton,SIGNAL(clicked()),this,SLOT(close()));

    //水平布局  加入部件label  lineEdit
    QHBoxLayout *topLeftLayout = new QHBoxLayout;
    topLeftLayout->addWidget(label);
    topLeftLayout->addWidget(lineEdit);

    //垂直布局  加入水平布局里所有的控件,接着加入caseCheckBox
    QVBoxLayout *leftLayout = new QVBoxLayout;
    leftLayout->addLayout(topLeftLayout);
    leftLayout->addWidget(caseCheckBox);

    //垂直布局 加入两个按钮部件
    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("Find");
    setFixedHeight(sizeHint().height());

}
void FindDialog::findClicked(){

        QString text = lineEdit->text();
        Qt::CaseSensitivity cs =
                  caseCheckBox->isChecked()?Qt::CaseSensitive:Qt::CaseInsensitive;

        if(backwardCheckBox->isChecked()){
            emit findPrevious(text,cs);

        }else{
            emit findNext(text,cs);
        }

}
void FindDialog::enableFindButton(const QString &text){
    findButton->setEnabled(!text.isEmpty());
}

main文件

1 #include "mainwindow.h"
2 #include <QApplication>
3 #include"finddialog.h"
4 int main(int argc,char *argv[]){
5     QApplication app(argc,argv);
6     FindDialog *dialog = new FindDialog;
7     dialog->show();
8     return app.exec();
9 }
时间: 2024-08-19 18:53:34

QT-创建对话框的相关文章

【Qt】2.3 使用Qt设计师来创建对话框

安装完Qt OpenSource之后,在开始菜单目录下会有这几个东西. 其中[Designer]是用来设计窗口界面的程序.所以现在可以使用它来设计一个对话框.在[Qt Creator]中,[设计]这一项里也可以做界面的设计. 打开[Designer],会默认弹出[新建窗体],选择[Dialog without Buttons],这会新建出一个没有任何东西的对话框. [Dialog with Buttons Bottom]和[Dialog with Buttons Right]会创建出包含[确定]

QT创建模态对话框阻塞整个应用程序和非模态对话框唯一性约束的简单示例

QT创建模态对话框阻塞整个应用程序和非模态对话框唯一性约束的简单示例 部分代码: // 创建模态对话框阻塞整个应用程序和非模态对话框唯一性约束 QMenu *pDialog = mBar->addMenu(QString::fromLocal8Bit("对话框")); QAction *pTopDialog = pDialog->addAction(QString::fromLocal8Bit("模态对话框")); connect(pTopDialog,

第二章 创建对话框

1.子类化QDialog 第一个例子是完全使用C++编写的Find对话框. finddialog.h: 1 #ifndef FINDDIALOG_H 2 #define FINDDIALOG_H 3 4 #include <QDialog> 5 6 class QCheckBox; 7 class QLabel; 8 class QLineEdit; 9 class QPushButton; 10 11 class FindDialog : public QDialog 12 { 13 Q_O

QT模态对话框及非模态对话框

QT模态对话框及非模态对话框 模态对话框(Modal Dialog)与非模态对话框(Modeless Dialog)的概念不是Qt所独有的,在各种不同的平台下都存在.又有叫法是称为模式对话框,无模式对话框等.所谓模态对话框就是在其没有被关闭之前,用户不能与同一个应用程序的其他窗口进行交互,直到该对话框关闭.对于非模态对话框,当被打开时,用户既可选择和该对话框进行交互,也可以选择同应用程序的其他窗口交互. 在Qt中,显示一个对话框一般有两种方式,一种是使用exec()方法,它总是以模态来显示对话框

Android 官方推荐 : DialogFragment 创建对话框

1. 概述 DialogFragment在android 3.0时被引入.是一种特殊的Fragment,用于在Activity的内容之上展示一个模态的对话框.典型的用于:展示警告框,输入框,确认框等等.在DialogFragment产生之前,我们创建对话框:一般采用AlertDialog和Dialog.注:官方不推荐直接使用Dialog创建对话框. 2. 好处与用法 使用DialogFragment来管理对话框,当旋转屏幕和按下后退键时可以更好的管理其声明周期,它和Fragment有着基本一致的

如何修改Qt标准对话框的文字(例如,英文改成中文)

此篇文章参考qtcn论坛整理而成,因为文字和图片是本人亲自组织,所以仍算原创. http://www.qtcn.org/bbs/read-htm-tid-30650.html http://blog.csdn.net/yangxiao_0203/article/details/7488967 如图所示,QT自带的内建标准对话框QFontDialog.QColorDialog.QMessageBox.默认的文字全是英文的.QLineEdit和QTextEdit的右键菜单,默认的文字也全是英文的.请

Qt标准对话框之QColorDialog

Qt中提供了一些标准的对话框,用于实现一些常用的预定义功能,比如本节中将要介绍的颜色对话框——QColorDialog. 在不同的系统平台下,颜色对话框的显示效果可能会有所不同,主要因系统主题风格而异,但是功能是相同的,显示效果如下: 查看帮助文档的话,我们可以看到这个类提供的方法还是很多的,但是我们一般情况下用到的也就一个静态的成员方法:getColor(),该函数的原型如下: 1 QColor QColorDialog::getColor(const QColor & initial = Q

使用 DialogFragment 创建对话框

简介 在DialogFragment产生之前,我们创建对话框一般采用AlertDialog和Dialog,DialogFragment在android 3.0时被引入,是一种特殊的Fragment,用于在Activity的内容之上展示一个模态的对话框. 使用DialogFragment来管理对话框,当旋转屏幕和按下后退键时可以更好的管理其生命周期(自动重建),它和Fragment有着基本一致的生命周期.且DialogFragment也允许开发者把Dialog作为内嵌的组件进行重用,类似Fragm

【转】VS2010/MFC编程入门之八(对话框:创建对话框类和添加控件变量)

原文网址:http://www.jizhuomi.com/software/153.html 前两讲中鸡啄米为大家讲解了如何创建对话框资源.创建好对话框资源后要做的就是生成对话框类了.鸡啄米再声明下,生成对话框类主要包括新建对话框类.添加控件变量和控件的消息处理函数等. 因为鸡啄米给大家的例程Addition是基于对话框的程序,所以程序自动创建了对话框模板IDD_ADDITION_DIALOG,并自动生成了对话框类CAdditionDlg,它是从CDialogEx类派生的.大家用过VC++6.0

[ucgui] 对话框1——创建对话框

>_<" 小工具和对话框的区别: 小工具可以创建并独立使用,因为它们本质上就是窗口.但是,通常需要使用对话框,它是包含一个或多个小工具的窗口. 对话框通常是一个窗口,它在出现时会要求用户输入信息.它可能包含多个小工具,要求用户根据各种选择来提供信息,或者以消息框的形式,仅提供信息 (比如向用户提供注意事项或警告)和一个“确定”按钮. >_<" 对话框的基本原理: 输入焦点 窗口管理器能记住用户使用触摸屏.鼠标.键盘或用其他方式最终所选择的窗口或窗口对象.该窗口会