目录
- 1.Qt内置对话框
- 0.有哪些
- 1.消息对话框 QMessageBox
- 2.颜色对话框 QColorDialog
- 3.⽂件对话框 QFileDialog
- 4.字体对话框 QFontDialog
- 5.输⼊对话框 QInputDialog
- 6.进度条对话框 QProgressDialog
1.Qt内置对话框
0.有哪些
- Qt提供了多种可复⽤的对话框类型,即Qt标准对话框,全部继承于
QDialog
类 - Qt常⽤的内置对话框:
QFiledialog
(⽂件对话框)、QColorDialog
(颜⾊对话框)、QFontDialog
(字体对话框)、QInputDialog
(输⼊对话框)和QMessageBox
(消息框)
1.消息对话框 QMessageBox
-
消息对话框主要⽤于为⽤⼾提⽰重要信息,强制⽤⼾进⾏选择操作
-
QMessageBox
类中定义了静态成员函数,可以直接调⽤创建不同⻛格的消息对话框-
Question()
:用于正常操作过程中的提问 -
Information()
:用于报告正常运行信息 -
Warning()
:用于报告非关键错误 -
Critical()
:用于报告严重错误
-
-
QMessageBox
中可以设置的按钮类型: -
自定义按钮可以在
QMessageBox
中充当的角色 -
示例:
QMessageBox* msgBox = new QMessageBox(this);msgBox->setWindowTitle("标题"); msgBox->setText("对话框文本"); msgBox->setIcon(QMessageBox::Information); // 设置消息对话框类型// 标准按钮中(QMessageBox 自己生成的), 根本就没法进行信号槽的连接 msgBox->setStandardButtons(QMessageBox::Ok | QMessageBox::Save | QMessageBox::Cancel);// 可以通过自定义按钮来连接信号槽 // msgBox->addButton(button, QMessageBox::AcceptRole);// 对于标准按钮 // 用户点击按钮,就能通过exec的返回值, 来知道用户点击了哪个按钮 int result = messageBox->exec(); if (result == QMessageBox::Ok) {} else if (result == QMessageBox::Save) {} else if (result == QMessageBox::Cancel) {}
2.颜色对话框 QColorDialog
-
颜⾊对话框的功能是允许⽤⼾选择颜⾊,继承⾃
QDialog
类
-
常用方法:
- 创建对象的同时设置⽗对象
QColorDialog(QWidget* parent = nullptr)
- 创建对象的同时通过QColor对象设置默认颜⾊和⽗对象
QColorDialog(const QColor& initial, QWidget *parent = nullptr)
- 设置当前颜⾊对话框中的颜色
void setCurrentColor(const QColor& color)
- 获取当前颜⾊对话框
QColor currentColor() const
- 打开颜⾊选择对话框,并返回⼀个
QColor
对象- 弹出一个模态对话框,用户选择颜色之后,对话框关闭,返回值就是用户选择的值
- 静态函数,可以直接调用
QColor getColor(const QColor& initial = Qt::white, QWidget* parent = nullptr, const QString &title = QString(), QColorDialog::ColorDialogOptions options = ColorDialogOptions())
- 打开颜⾊对话框
void open(QObject* receiver, const char* member)
- 创建对象的同时设置⽗对象
-
示例:
QColor color = QColorDialog::getColor(QColor(0, 255, 0), this, "选择颜色");char style[1024] = { 0 }; sprintf(style, "background-color: rgb(%d, %d, %d);", color.red(), color.green(), color.blue());this->setStyleSheet(style);
3.⽂件对话框 QFileDialog
- ⽂件对话框⽤于应⽤程序中需要打开⼀个外部⽂件或需要将当前内容存储到指定的外部⽂件
- 常用方法:均为静态函数,不需要创建对象即可直接使用
- 打开文件(一次只能打开一个文件)
QString getOpenFileName(QWidget* parent = nullptr, const QString& caption = QString(), const QString& dir = QString(), const QString& filter = QString(), QString* selectedFilter = nullptr, QFileDialog::Options options = Options())
- 打开多个⽂件(⼀次可以打开多个⽂件)
QStringList getOpenFileNames(QWidget* parent = nullptr, const QString& caption = QString(), const QString& dir = QString(), const QString& filter = QString(), QString* selectedFilter = nullptr, QFileDialog::Options options = Options())
- 保存⽂件
QString getSaveFileName(QWidget* parent = nullptr, const QString& caption = QString(), const QString& dir = QString(), const QString& filter = QString(), QString* selectedFilter = nullptr, QFileDialog::Options options = Options())
- 参数说明:
parent
:父亲caption
:对话框标题dir
:默认打开的路径filter
:文件过滤器,限制文件格式
- 以上方法均是获得了文件名字,打开/保存功能需要额外实现
- 打开文件(一次只能打开一个文件)
4.字体对话框 QFontDialog
- Qt中提供了预定义的字体对话框类
QFontDialog
,⽤于提供选择字体的对话框部件 - 静态函数
getFont()
可以直接调用,不需要创建对象即可直接使用 - 示例:
bool ok = false; QFont font = QFontDialog::getFont(&ok);qDebug() << font.family(); qDebug() << font.pointSize(); qDebug() << font.bold(); qDebug() << font.italic();ui->pushButton->setFont(font);
5.输⼊对话框 QInputDialog
- Qt中提供了预定义的输⼊对话框类
QInputDialog
,⽤于进⾏临时数据输⼊的场合 - 常用方法:均为静态函数,不需要创建对象即可直接使用
- 双精度浮点型输⼊数据对话框
double getDouble(QWidget* parent, const QString& title, const QString& label, double value = 0, double min = -2147483647, double max = 2147483647, int decimals = 1, bool* ok = nullptr, Qt::WindowFlags flags = Qt::WindowFlags())
- 整型输⼊数据对话框
int getInt(QWidget* parent, const QString& title, const QString& label, int value = 0, int min = -2147483647, int max = 2147483647, int step = 1, bool* ok = nullptr,Qt::WindowFlags flags = Qt::WindowFlags())
- 选择条⽬型输⼊数据框
QString getItem(QWidget* parent, const QString& title, const QString& label, const QStringList& items, int current = 0, bool editable = true, bool* ok = nullptr, Qt::WindowFlags flags = Qt::WindowFlags(), Qt::InputMethodHints inputMethodHints = Qt::ImhNone)
- 参数说明:
parent
:父亲title
:对话框标题label
:对话框标签items
:可供选择的条目
- 双精度浮点型输⼊数据对话框
- 示例:
int result = QInputDialog::getInt(this, "整数输入对话框", "请输入一个整数: "); double result = QInputDialog::getDouble(this, "浮点数输入对话框", "请输入一个浮点数: ");QStringList items; items.push_back("111"); items.push_back("222"); items.push_back("333"); items.push_back("444"); QString item = QInputDialog::getItem(this, "条目输入对话框", "请输入条目: ", items);
6.进度条对话框 QProgressDialog
- Qt提供了预定义的进度条对话框类
QProgressDialog
,⽤于显⽰当前进度信息和需要⽤⼾等待的场合 - 示例:
// 把对话框的初始化逻辑放到了构造函数中. dialog = new QProgressDialog(this); dialog->setWindowTitle("进度条对话框"); dialog->setLabelText("当前任务进度为: "); dialog->setRange(0, 100); dialog->setValue(20);connect(dialog, &QProgressDialog::canceled, this, [=]() {timer->stop(); });