目录
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为true
stat = true;
close();
}
void setpass(bool flag)
{
if(!flag)
le1->setEchoMode(QLineEdit::Password);
else
le1->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_OBJECT
public:
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 0
myQDialog a;
a.setFixedSize(100, 100);
a.exec();
if(a.stat)
exit(0);
#endif
int s = myQDialog::getstat();
if (!s)
exit(0);
}
Widget::~Widget()
{
}