目录
QDialog
标准对话框(Standard Dialogs):
内置对话框(Built-in Dialogs):
自定义对话框(Custom Dialogs)
示例
myqdialog.h
widget.h
myqdialog.cpp
widget.cpp
QDialog
- QDialog是QWidget的子类,用于创建对话框。
- 对话框是一种特殊类型的窗口,通常用于与用户进行交互,提供额外的选项或接收用户的输入。
- QDialog提供了一些常用的对话框样式,例如消息框、文件选择框、颜色选择框等。
- 对话框可以自定义,可以根据需要添加自己的控件和逻辑。
标准对话框(Standard Dialogs):
- 标准对话框是Qt提供的一组常用对话框,用于执行常见的操作,如打开文件、保存文件、选择颜色、选择字体等。
- 这些对话框具有标准化的用户界面,可以直接使用,无需自定义。
一些常见的标准对话框包括:
- 文件对话框(QFileDialog):用于选择文件或文件夹。
- 字体对话框(QFontDialog):用于选择字体样式和大小。
- 颜色对话框(QColorDialog):用于选择颜色。
内置对话框(Built-in Dialogs):
- 内置对话框是一些特定功能的对话框,提供了更高级的交互操作,如进度对话框、输入对话框、消息对话框等。
- 这些对话框具有预定义的样式和功能,可以根据需要进行适当的配置。
一些常见的内置对话框包括:
- 进度对话框(QProgressDialog):显示任务的进度,并提供取消按钮。
- 输入对话框(QInputDialog):用于获取用户输入的对话框,可以输入文本、数字、密码等。
- 消息对话框(QMessageBox):显示一条消息并等待用户操作的对话框。
自定义对话框(Custom Dialogs)
- 自定义对话框是根据特定需求创建的定制化对话框。
- 开发者可以通过继承QDialog或其他适合的类,根据需要定义对话框的布局、控件和交互逻辑。
自定义对话框的创建通常涉及以下几个步骤:
- 创建一个继承自QDialog的自定义对话框类。
- 在自定义对话框类中定义布局、添加控件和信号槽等内容。
- 在应用程序中创建自定义对话框对象,并显示对话框。
示例
myqdialog.h
#ifndef MYQDIALOG_H
#define MYQDIALOG_H#include <QDialog>
#include <QLineEdit>
#include <QPushButton>
#include <QCheckBox>class myQDialog : public QDialog
{Q_OBJECT
public:myQDialog();public slots:void ok_pushed(){//ok按下stat为truestat = true;close();}void setpass(bool flag){if(!flag)le1->setEchoMode(QLineEdit::Password);elsele1->setEchoMode(QLineEdit::Normal);}public:static int getstat(){myQDialog a;//a.setFixedSize(100, 100);a.exec();return a.stat;}private:QLineEdit *le, *le1;QPushButton *pb;QCheckBox *ck;bool checked;int stat; //标志,标志对话框是按下什么结束的};#endif // MYQDIALOG_H
widget.h
#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>class Widget : public QWidget
{Q_OBJECTpublic:Widget(QWidget *parent = 0);~Widget();
};#endif // WIDGET_H
myqdialog.cpp
#include "myqdialog.h"
#include <QFormLayout>myQDialog::myQDialog()
{le = new QLineEdit;le1 = new QLineEdit;pb = new QPushButton("登录");ck = new QCheckBox;QFormLayout *fbox = new QFormLayout;fbox->addRow("user", le);fbox->addRow("pawd", le1);fbox->addRow("show password", ck);fbox->addRow("", pb);setLayout(fbox);le1->setEchoMode(QLineEdit::Password); // 设置密码框为密码模式stat = false;connect(pb, SIGNAL(clicked(bool)), this, SLOT(ok_pushed()));connect(ck, SIGNAL(clicked(bool)), this, SLOT(setpass(bool)));}
widget.cpp
#include "widget.h"
#include <QWidget>
#include <QDialog>
#include "myqdialog.h"Widget::Widget(QWidget *parent): QWidget(parent)
{
#if 0myQDialog a;a.setFixedSize(100, 100);a.exec();if(a.stat)exit(0);#endifint s = myQDialog::getstat();if (!s)exit(0);
}Widget::~Widget()
{}