- 公开视频 -> 链接点击跳转公开课程
- 博客首页 -> 链接点击跳转博客主页
目录
模态对话框
非模态对话框
文件对话框
基本概念
静态函数
常见属性
颜色对话框
基本概念
静态函数
常见属性
字体对话框
基本概念
静态函数
常见属性
输入对话框
基本概念
静态函数
消息对话框
基本概念
静态函数
-
模态对话框
-
模态对话框是指在打开后,用户必须与该对话框交互并关闭它,才能返回到主窗口或其他窗口进行操作。在模态对话框打开期间,主窗口和其他窗口都不可用。
-
模态对话框通常用于需要用户立即处理的情况,如确认对话框、错误提示、设置窗口等。
-
在 Qt 中,可以通过
QDialog
类实现模态对话框。你可以使用exec()
方法来显示模态对话框。
-
void MainWindow::on_pushButton_clicked()
{QDialog dlg(this);QPushButton* btn = new QPushButton("on_pushButton_clicked", &dlg);dlg.exec();
}void MainWindow::on_pushButton_3_clicked()
{Dialog1 dlg(this);dlg.exec();
}
-
非模态对话框
-
非模态对话框是指在打开后,用户可以自由地与主窗口或其他窗口交互,而不必首先关闭该对话框。
-
非模态对话框适用于不需要立即处理的情况,如工具窗口、搜索窗口等。
-
在 Qt 中,可以通过
QDialog
类实现非模态对话框。你可以使用show()
方法来显示非模态对话框。
-
void MainWindow::on_pushButton_2_clicked()
{QDialog* dlg = new QDialog(this);dlg->setAttribute(Qt::WA_DeleteOnClose);dlg->show();
}void MainWindow::on_pushButton_4_clicked()
{Dialog2* dlg = new Dialog2(this);dlg->show();
}
-
文件对话框
-
基本概念
-
QFileDialog:一个用于选择文件或目录的对话框。
-
静态函数:
QFileDialog
提供了一些静态函数,可以快速创建和显示文件对话框。 -
模式:文件对话框可以是模态的(阻塞父窗口)或非模态的(不阻塞父窗口)。
-
-
静态函数
-
getOpenFileName
:选择一个文件进行打开。 -
getSaveFileName
:选择一个文件进行保存。 -
getExistingDirectory
:选择一个目录。 -
getOpenFileNames
:选择多个文件进行打开。
-
-
常见属性
-
setWindowTitle:设置对话框的标题。
-
setDirectory:设置对话框的初始目录。
-
setNameFilter:设置文件过滤器。
-
setFileMode:设置文件模式(例如,选择单个文件、多个文件、目录等)。
-
setOption:设置对话框的选项(例如,显示隐藏文件、不解析符号链接等)。
-
-
getOpenFileName
用于选择一个文件进行打开。-
函数原型
QString QFileDialog::getOpenFileName(QWidget *parent = nullptr,const QString &caption = QString(),const QString &dir = QString(),const QString &filter = QString(),QString *selectedFilter = nullptr,Options options = Options() )
-
参数说明
-
parent
:父窗口,用于模态对话框的父窗口。 -
caption
:对话框的标题。 -
dir
:初始目录。 -
filter
:文件过滤器,例如"Images (*.png *.xpm *.jpg);;Text files (*.txt)"
。 -
selectedFilter
:选中的过滤器。 -
options
:对话框选项,例如QFileDialog::ReadOnly
。
-
-
示例代码
-
void MainWindow::on_pushButton_5_clicked() {QString fileName = QFileDialog::getOpenFileName(this,"Open File","D:\\Debug","Image(*.bmp *.png);;text(*.txt);;allfiles(*.*)",NULL,QFileDialog::ReadOnly);qDebug() << fileName; }
-
-
-
getSaveFileName
用于选择一个文件进行保存。-
函数原型
QString QFileDialog::getSaveFileName(QWidget *parent = nullptr,const QString &caption = QString(),const QString &dir = QString(),const QString &filter = QString(),QString *selectedFilter = nullptr,Options options = Options() )
-
参数说明
-
parent
:父窗口,用于模态对话框的父窗口。 -
caption
:对话框的标题。 -
dir
:初始目录。 -
filter
:文件过滤器,例如"Images (*.png *.xpm *.jpg);;Text files (*.txt)"
。 -
selectedFilter
:选中的过滤器。 -
options
:对话框选项,例如QFileDialog::ReadOnly
。
-
-
示例代码
-
void MainWindow::on_pushButton_7_clicked()
{QString fileName = QFileDialog::getSaveFileName(this,"Save File","D:\\Debug","Image(*.bmp *.png);;text(*.txt);;allfiles(*.*)",NULL,QFileDialog::ReadOnly);qDebug() << fileName;
}
-
getExistingDirectory
用于选择一个目录。-
函数原型
QString QFileDialog::getExistingDirectory(QWidget *parent = nullptr,const QString &caption = QString(),const QString &dir = QString(),Options options = ShowDirsOnly )
-
参数说明
-
parent
:父窗口,用于模态对话框的父窗口。 -
caption
:对话框的标题。 -
dir
:初始目录。 -
options
:对话框选项,例如QFileDialog::ShowDirsOnly
。
-
-
示例代码
-
void MainWindow::on_pushButton_8_clicked()
{QString dir = QFileDialog::getExistingDirectory(this,"Open Directory","D:\\Debug",QFileDialog::ShowDirsOnly | QFileDialog::DontResolveSymlinks);qDebug() << dir;
}
-
getOpenFileNames
用于选择多个文件进行打开。-
函数原型
QStringList QFileDialog::getOpenFileNames(QWidget *parent = nullptr,const QString &caption = QString(),const QString &dir = QString(),const QString &filter = QString(),QString *selectedFilter = nullptr,Options options = Options() )
-
参数说明
-
parent
:父窗口,用于模态对话框的父窗口。 -
caption
:对话框的标题。 -
dir
:初始目录。 -
filter
:文件过滤器,例如"Images (*.png *.xpm *.jpg);;Text files (*.txt)"
。 -
selectedFilter
:选中的过滤器。 -
options
:对话框选项,例如QFileDialog::ReadOnly
。
-
-
示例代码
-
void MainWindow::on_pushButton_6_clicked()
{QStringList fileName = QFileDialog::getOpenFileNames(this,"Open Files","D:\\Debug","Image(*.bmp *.png);;text(*.txt);;allfiles(*.*)",NULL,QFileDialog::ReadOnly);qDebug() << fileName;
}
-
颜色对话框
-
基本概念
-
QColorDialog:一个用于选择颜色的对话框。
-
静态函数:
QColorDialog
提供了一些静态函数,可以快速创建和显示颜色对话框。 -
模式:颜色对话框可以是模态的(阻塞父窗口)或非模态的(不阻塞父窗口)。
-
-
静态函数
getColor
:选择一个颜色。
-
常见属性
-
setWindowTitle:设置对话框的标题。
-
setCurrentColor:设置初始颜色。
-
currentColor:获取当前选中的颜色。
-
-
getColor
函数获取颜色-
函数原型
QColor QColorDialog::getColor(const QColor &initial = Qt::white,QWidget *parent = nullptr,const QString &title = QString(),ColorDialogOptions options = ColorDialogOptions() )
-
参数说明
-
initial
:初始颜色。默认为Qt::white
。 -
parent
:父窗口,用于模态对话框的父窗口。 -
title
:对话框的标题。默认为空字符串。 -
options
:对话框选项。可以是QColorDialog::ShowAlphaChannel
或其他选项的组合。
-
-
示例代码
-
void MainWindow::on_pushButton_9_clicked()
{QColor color = QColorDialog::getColor(Qt::white, this, "Select Color");if(color.isValid()){ui->pushButton_9->setStyleSheet("color:" + color.name() + ";");qDebug() << color.name();}}
-
字体对话框
-
基本概念
-
QFontDialog:一个用于选择字体的对话框。
-
静态函数:
QFontDialog
提供了一些静态函数,可以快速创建和显示字体对话框。 -
模式:字体对话框可以是模态的(阻塞父窗口)或非模态的(不阻塞父窗口)。
-
-
静态函数
getFont
:选择一个字体。
-
常见属性
-
setWindowTitle:设置对话框的标题。
-
setCurrentFont:设置初始字体。
-
currentFont:获取当前选中的字体。
-
-
getFont
:选择一个字体。-
函数原型
QFont QFontDialog::getFont(bool *ok,const QFont &initial = QFont(),QWidget *parent = nullptr,const QString &title = QString(),FontDialogOptions options = FontDialogOptions() )
-
参数说明
-
ok
:一个布尔指针,用于指示用户是否确认了选择。如果用户确认了选择,*ok
将被设置为true
,否则为false
。 -
initial
:初始字体。默认为空字体(QFont()
)。 -
parent
:父窗口,用于模态对话框的父窗口。 -
title
:对话框的标题。默认为空字符串。 -
options
:对话框选项。可以是QFontDialog::NoButtons
或其他选项的组合。
-
-
示例代码
-
void MainWindow::on_pushButton_10_clicked()
{bool ok;QFont font = QFontDialog::getFont(&ok,QFont("Helvetica [Cronyx]", 10),this,"Select Font");if(ok){ui->pushButton_10->setFont(font);qDebug() << font.family();}}
-
输入对话框
-
基本概念
-
QInputDialog:一个用于获取用户输入的对话框。
-
输入类型:可以输入的类型包括字符串(text)、整数(int)、浮点数(double)等。
-
-
静态函数
-
getText:获取字符串输入。
-
函数原型
QString QInputDialog::getText(QWidget *parent, const QString &title, const QString &label, QLineEdit::EchoMode mode = QLineEdit::Normal, const QString &text = QString(), bool *ok = nullptr,Qt::WindowFlags flags = Qt::WindowFlags() )
-
参数说明
-
parent
:父窗口指针,用于模态对话框的父窗口。 -
title
:对话框的标题。 -
label
:对话框中显示的标签文本。 -
mode
:输入框的回显模式,例如普通模式(QLineEdit::Normal
)或密码模式(QLineEdit::Password
)。 -
text
:输入框的初始文本。 -
ok
:布尔指针,用于指示用户是否确认了输入。如果用户确认了输入,*ok
将被设置为true
,否则为false
。 -
flags
:窗口标志,用于设置对话框的外观和行为。
-
-
-
getInt:获取整数输入。
int QInputDialog::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()
)
-
参数说明
-
parent
:父窗口指针,用于模态对话框的父窗口。 -
title
:对话框的标题。 -
label
:对话框中显示的标签文本。 -
value
:输入框的初始值。 -
min
:输入的最小值。 -
max
:输入的最大值。 -
step
:输入框的步长。 -
ok
:布尔指针,用于指示用户是否确认了输入。如果用户确认了输入,*ok
将被设置为true
,否则为false
。 -
flags
:窗口标志,用于设置对话框的外观和行为。
-
-
getDouble:获取浮点数输入。
-
函数原型
-
double QInputDialog::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() )
-
-
参数说明
-
parent
:父窗口指针,用于模态对话框的父窗口。 -
title
:对话框的标题。 -
label
:对话框中显示的标签文本。 -
value
:输入框的初始值。 -
min
:输入的最小值。 -
max
:输入的最大值。 -
decimals
:输入框的小数位数。 -
ok
:布尔指针,用于指示用户是否确认了输入。如果用户确认了输入,*ok
将被设置为true
,否则为false
。 -
flags
:窗口标志,用于设置对话框的外观和行为。
-
-
getItem:从一个项目列表中获取选择。
-
函数原型
QString QInputDialog::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() )
-
参数说明
-
parent
:父窗口指针,用于模态对话框的父窗口。 -
title
:对话框的标题。 -
label
:对话框中显示的标签文本。 -
items
:项目列表,用户可以从中选择。 -
current
:初始选中的项目索引。 -
editable
:是否允许用户输入自定义文本。 -
ok
:布尔指针,用于指示用户是否确认了输入。如果用户确认了输入,*ok
将被设置为true
,否则为false
。 -
flags
:窗口标志,用于设置对话框的外观和行为。
-
- 示例代码
-
void MainWindow::on_pushButton_11_clicked() {bool ok;QString text = QInputDialog::getText(this,"input dialog","please input your name:",QLineEdit::Normal,"0xCC",&ok );if(ok && !text.isEmpty()){qDebug() << text;}}void MainWindow::on_pushButton_12_clicked() {bool ok;int value = QInputDialog::getInt(this,"input dialog","please input your age:",18,0,120,1,&ok);if(ok) qDebug() << value; }void MainWindow::on_pushButton_13_clicked() {bool ok;QStringList items;items << "apple" << "banana";QString item = QInputDialog::getItem(this,"input dialog","please select a fruit",items,1,false,&ok);if(ok) qDebug() << item; }
-
-
-
消息对话框
-
基本概念
-
QMessageBox:一个用于显示消息的对话框。
-
消息类型:包括信息(Information)、警告(Warning)、错误(Critical)、询问(Question)等。
-
-
静态函数
-
information:显示信息消息。
-
函数原型
int QMessageBox::information(QWidget *parent, const QString &title, const QString &text, int button0, int button1 = 0, int button2 = 0 )
-
warning:显示警告消息。
-
函数原型
int QMessageBox::warning( QWidget *parent, const QString &title, const QString &text, int button0, int button1 = 0, int button2 = 0 )
-
-
critical:显示错误消息。
-
函数原型
int QMessageBox::critical( QWidget *parent, const QString &title, const QString &text, int button0, int button1 = 0, int button2 = 0 )
-
question:显示询问消息。
-
函数原型
int QMessageBox::question( QWidget *parent, const QString &title, const QString &text, int button0, int button1 = 0, int button2 = 0 )
-
参数说明
-
parent
:父窗口指针,用于模态对话框的父窗口,可以是nullptr
表示没有父窗口。 -
title
:对话框的标题。 -
text
:对话框中显示的主要消息文本。 -
button0
:对话框中的第一个按钮,使用QMessageBox::StandardButton
枚举值。 -
button1
:对话框中的第二个按钮(可选),使用QMessageBox::StandardButton
枚举值。 -
button2
:对话框中的第三个按钮(可选),使用QMessageBox::StandardButton
枚举值。
-
-
示例代码
-
void MainWindow::on_pushButton_14_clicked() {QMessageBox::information(this, "information", "This is a information message", QMessageBox::Ok); }void MainWindow::on_pushButton_15_clicked() {QMessageBox::warning(this, "warning", "This is a warning message"); }void MainWindow::on_pushButton_16_clicked() {QMessageBox::critical(this, "critical", "This is a critical message"); }void MainWindow::on_pushButton_17_clicked() {int ret = QMessageBox::question(this, "question", "Are you want to continue?");if(ret == QMessageBox::Yes){QMessageBox::information(this, "information", "your chose yes");}else{QMessageBox::information(this, "information", "your chose no");} }
-