一、菜单栏Qt中的菜单栏是通过QMenuBar这个类来实现的。一个主窗口最多只有一个菜单栏。位于主窗口顶部、主窗口标题栏下面。菜单栏中包含菜单.菜单中包含菜单项。1、创建菜单栏代码示例方法一用函数menuBar()创建菜单栏//创建菜单栏 QMenuBar* menubarmenuBar(); //将创建好的菜单栏放入窗口中 this-setMenuBar(menubar);方法二在堆上动态创建菜单栏QMenuBar* menubarnew QMenuBar(this); this-setMenuBar(menubar);2、在菜单栏中添加菜单代码示例通过addMenu来添加菜单//创建菜单 QMenu* menu1new QMenu(文件); QMenu* menu2new QMenu(编辑); QMenu* menu3new QMenu(视图); //将菜单添加进菜单栏中 menubar-addMenu(menu1); menubar-addMenu(menu2); menubar-addMenu(menu3);3、创建菜单项代码示例用QAction来创建菜单项//创建菜单项 QAction* action1new QAction(打开); QAction* action2new QAction(保存); QAction* action3new QAction(关闭); //将菜单项添加到菜单中 menu1-addAction(action1); menu1-addAction(action2); menu1-addAction(action3);4、在菜单栏之间添加分割线代码示例用addSeparator()来实现添加分割线//将菜单项添加到菜单中 menu1-addAction(action1); menu1-addSeparator();//添加分割线 menu1-addAction(action2); menu1-addSeparator();//添加分割线 menu1-addAction(action3);5、综合运用创建菜单和中央控件MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) , ui(new Ui::MainWindow) { ui-setupUi(this); //设置窗口标题 this-setWindowTitle(记事本); //创建菜单栏 QMenuBar* menubarnew QMenuBar(this); //将创建好的菜单栏放入窗口中 this-setMenuBar(menubar); //创建菜单 QMenu* menu1new QMenu(文件); QMenu* menu2new QMenu(编辑); QMenu* menu3new QMenu(视图); //将菜单添加进菜单栏中 menubar-addMenu(menu1); menubar-addMenu(menu2); menubar-addMenu(menu3); //创建菜单项 QAction* action1new QAction(打开); QAction* action2new QAction(保存); QAction* action3new QAction(关闭); //将菜单项添加到菜单中 menu1-addAction(action1); menu1-addSeparator();//添加分割线 menu1-addAction(action2); menu1-addSeparator();//添加分割线 menu1-addAction(action3); //创建一个中央控件 QTextEdit* editnew QTextEdit(this); this-setCentralWidget(edit); edit-setPlaceholderText(此处编写⽂本内容...); }给菜单项添加动作//连接信号槽 connect(action1,QAction::triggered,this,MainWindow::load); connect(action2,QAction::triggered,this,MainWindow::save); connect(action3,QAction::triggered,this,MainWindow::close);void MainWindow::load() { // 选择文件 QString fileName QFileDialog::getOpenFileName( this, 加载文件, QStandardPaths::writableLocation(QStandardPaths::HomeLocation), 文本文件 (*.txt);;所有文件 (*.*) ); // 用户取消 if (fileName.isEmpty()) { qDebug() 用户取消选择; return; } // 打开文件 QFile file(fileName); if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) { qDebug() 文件打开失败: file.errorString(); return; } // 读取内容 QTextStream in(file); in.setEncoding(QStringConverter::Utf8); // 自动处理 UTF-8 QString text in.readAll(); file.close(); // 显示到界面 edit-setPlainText(text); } void MainWindow::save() { // 弹出对话框, 选择写入文件的路径 QFileDialog* dialog new QFileDialog (this); QString fileName dialog-getSaveFileName (this , 保存文件 , C:/Users/1/); qDebug() fileName: fileName; // 写入文件 std::ofstream file(fileName.toStdString().c_str()); if (!file.is_open()) { qDebug() 文件保存失败!; return; } const QString text edit-toPlainText (); file text.toStdString(); file.close (); }二、工具栏工具栏是菜单项的一种快捷方式。可以有多个也可以没有。一般以图片的形式存在。1、创建工具栏调用QMainWindow类的addToolBar()函数来创建工具栏//创建工具栏 QToolBar* toolbarnew QToolBar(this); this-addToolBar(toolbar); //将工具添加到工具栏 toolbar-addAction(action1); toolbar-addAction(action2); //设置图标 QIcon icon1(://open.png); QIcon icon2(://save.png); action1-setIcon(icon1); action2-setIcon(icon2);2、设置停靠位置枚举值含义Qt::LeftToolBarArea停靠在左侧Qt::RightToolBarArea停靠在右侧Qt::TopToolBarArea停靠在顶部Qt::BottomToolBarArea停靠在底部Qt::AllToolBarAreas以上四个位置均可停靠方法一创建工具栏的同时指定其停靠的位置。//创建工具栏 QToolBar* toolbarnew QToolBar(this); //设置工具栏在顶部显示 this-addToolBar(Qt::TopToolBarArea,toolbar);方法二使用QToolBar类提供的setAllowedAreas()函数设置停靠位置。//创建工具栏 QToolBar* toolbarnew QToolBar(this); this-addToolBar(toolbar); //只允许右边停靠 toolbar-setAllowedAreas(Qt::RightToolBarArea);3、设置浮动属性工具栏的浮动属性可以通过QToolBar类提供的setFloatable()函数来设置。//设置可以悬浮 toolbar-setFloatable(true);4、设置移动属性设置工具栏的移动属性可以通过QToolBar类提供的setMovable()函数来设置。//设置不能移动 toolbar-setMovable(false);5、综合运用可以移动任意位置停靠可以悬停//创建工具栏 QToolBar* toolbarnew QToolBar(this); this-addToolBar(toolbar); //只允许右边停靠 toolbar-setAllowedAreas(Qt::AllToolBarAreas); //设置可以悬浮 toolbar-setFloatable(true); //设置不能移动 toolbar-setMovable(true); //将工具添加到工具栏 toolbar-addAction(action1); toolbar-addAction(action2); //设置图标 QIcon icon1(://open.png); QIcon icon2(://save.png); action1-setIcon(icon1); action2-setIcon(icon2);三、状态栏状态栏是应⽤程序中输出简要信息的区域。⼀般位于主窗口的最底部。⼀个窗口中最多只能有⼀个状态栏。在Qt中状态栏是通过QStatusBar类来实现的。1、状态栏的创建通过QMainWindow提供的statusBar()创建状态栏。//创建状态栏 QStatusBar* stbarstatusBar(); //将状态栏设置到窗口 setStatusBar(stbar);2、实时信息通过showMessage()函数来设置一个实时信息。可以控制显示多少秒之后消失。//设置实时信息 stbar-showMessage(运行正常,2000);3、永久信息通过label来建立一个永久信息。利用addPermanentWidget()可以将标签设置到状态栏右边。//建立标签 QLabel* label1new QLabel(左侧永久信息,this); QLabel* label2new QLabel(右侧永久信息,this); //信息显示 stbar-addWidget(label1); //右侧信息显示 stbar-addPermanentWidget(label2);四、浮动窗口浮动窗⼝是通过 QDockWidget类 来实现浮动的功能。1、浮动窗口的创建浮动窗⼝的创建是通过QDockWidget类提供的构造⽅法QDockWidget()函数动态创建的//创建窗口 QDockWidget* dockwidgetnew QDockWidget(浮动窗口,this); addDockWidget(Qt::AllDockWidgetAreas,dockwidget);2、设置停靠位置枚举值含义Qt::LeftDockWidgetArea停靠在主窗口左侧Qt::RightDockWidgetArea停靠在主窗口右侧Qt::TopDockWidgetArea停靠在主窗口顶部Qt::BottomDockWidgetArea停靠在主窗口底部Qt::AllDockWidgetAreas允许在上述所有区域停靠浮动窗⼝是位于中⼼部件的周围。可以通过QDockWidget类中提供setAllowedAreas()函数设置其允许停靠的位置。//设置窗口只允许上下停靠 dockwidget-setAllowedAreas(Qt::TopDockWidgetArea | Qt::BottomDockWidgetArea);五、对话框对话框是 GUI 程序中不可或缺的组成部分。一些不适合在主窗口实现的功能组件可以设置在对话框中。对话框通常是一个顶层窗口出现在程序最上层用于实现短期任务或者简洁的用户交互。Qt 常用的内置对话框有类名作用最常用静态函数QFileDialog选择文件或文件夹getOpenFileName()、getSaveFileName()、getExistingDirectory()QColorDialog选择颜色getColor()QFontDialog选择字体getFont()QInputDialog获取简单用户输入getText()、getInt()、getDouble()、getItem()QMessageBox提示、警告、确认information()、warning()、critical()、question()1、对话框的分类类型说明使用方式模态对话框Modal阻塞其他窗口必须关闭才能继续exec()非模态对话框Modeless不阻塞可与主窗口同时操作show()半模态Application Modal阻塞整个应用而非单个窗口setWindowModality()1️⃣ 模态对话框Modal Dialog定义对话框弹出后阻塞同一应用程序中其他窗口的用户交互直到该对话框被关闭。特点强制用户先处理对话框防止用户在未完成当前任务时操作其他部分通常用于需要用户确认或提供必要信息的场景//当点击 新建 时弹出⼀个模态对话框 connect(action4,QAction::triggered,[](){ QDialog dlog(this); dlog.resize(200,100); dlog.exec(); });2️⃣ 非模态对话框Modeless Dialog定义对话框弹出后阻塞同一应用程序中其他窗口的用户交互直到该对话框被关闭。特点强制用户先处理对话框防止用户在未完成当前任务时操作其他部分通常用于需要用户确认或提供必要信息的场景//当点击 新建 时弹出⼀个非模态对话框 connect(action4,QAction::triggered,[](){ QDialog* dlognew QDialog(this); dlog-resize(200,100);//设置窗口大小 dlog-setAttribute(Qt::WA_DeleteOnClose);//当窗口关闭时自动释放dlog dlog-show(); });3️⃣ 半模态对话框Semi-Modal定义介于模态和非模态之间通过setWindowModality()控制阻塞范围。Qt::WindowModality说明Qt::NonModal非模态不阻塞任何窗口Qt::WindowModal阻塞其父窗口及所有子窗口Qt::ApplicationModal阻塞整个应用程序//当点击 新建 时弹出⼀个半模态对话框 connect(action4,QAction::triggered,[](){ QDialog* dialog new QDialog(this); dialog-setAttribute(Qt::WA_DeleteOnClose); // Qt::WindowModal 表示只阻塞父窗口及其子窗口不阻塞其他顶级窗口 dialog-setWindowModality(Qt::WindowModal); dialog-resize(200, 100); dialog-show(); // 继续使用 show()因为它是非阻塞的 });2、内置对话框对话框类名核心用途文件对话框QFileDialog打开/保存文件、选择文件夹颜色对话框QColorDialog选取颜色字体对话框QFontDialog选取字体样式输入对话框QInputDialog获取文本、数字、列表项消息框QMessageBox提示、警告、错误、确认1️⃣ QFileDialog文件对话框最常用的对话框用于文件系统交互。//文件对话框 QPushButton* btnnew QPushButton(文件对话框,this); btn-move(300,400); connect(btn,QPushButton::clicked,[](){ QString fileName QFileDialog::getOpenFileName( this, 选择文件, QDir::homePath(), // 默认路径 Images (*.png *.jpg);;Text (*.txt);;All (*.*) // 过滤器 ); });2️⃣ QColorDialog颜色对话框用于选取 RGB、HSV 或 CMYK 颜色。//颜色对话框 QPushButton* btnnew QPushButton(颜色对话框,this); btn-move(300,400); connect(btn,QPushButton::clicked,[](){ QColor color QColorDialog::getColor( Qt::red, // 初始颜色 this, 选择颜色, QColorDialog::ShowAlphaChannel // 选项显示透明度 ); if (color.isValid()) { // 用户选择了有效颜色 } });3️⃣ QFontDialog字体对话框用于选择字体族、大小和样式。//字体对话框 QPushButton* btnnew QPushButton(字体对话框,this); btn-move(300,400); connect(btn,QPushButton::clicked,[](){ bool ok; QFont font QFontDialog::getFont( ok, // 返回用户是否点击了 OK QFont(Arial, 12), // 初始字体 this, 选择字体 ); if (ok) { // 用户确认了字体 } });4️⃣ QInputDialog输入对话框轻量级对话框用于获取简单输入。//输入对话框 QPushButton* btnnew QPushButton(输入对话框,this); btn-move(300,400); connect(btn,QPushButton::clicked,[](){ bool ok; QString text QInputDialog::getText( this, 输入, 用户名:, QLineEdit::Normal, 默认文本, ok ); });5️⃣ QMessageBox消息对话框用于向用户显示信息或请求确认。//消息对话框 QPushButton* btnnew QPushButton(消息对话框,this); btn-move(300,400); connect(btn,QPushButton::clicked,[](){ // 信息提示 QMessageBox::information(this, 提示, 操作成功); // 警告 QMessageBox::warning(this, 警告, 磁盘空间不足); // 错误 QMessageBox::critical(this, 错误, 文件无法打开); // 询问带返回值判断 int ret QMessageBox::question( this, 确认, 确定要删除吗, QMessageBox::Yes | QMessageBox::No, QMessageBox::No ); if (ret QMessageBox::Yes) { // 执行删除 } });
Qt 主窗口全家桶:菜单栏、工具栏、状态栏与对话框完全指南
发布时间:2026/5/16 4:00:52
一、菜单栏Qt中的菜单栏是通过QMenuBar这个类来实现的。一个主窗口最多只有一个菜单栏。位于主窗口顶部、主窗口标题栏下面。菜单栏中包含菜单.菜单中包含菜单项。1、创建菜单栏代码示例方法一用函数menuBar()创建菜单栏//创建菜单栏 QMenuBar* menubarmenuBar(); //将创建好的菜单栏放入窗口中 this-setMenuBar(menubar);方法二在堆上动态创建菜单栏QMenuBar* menubarnew QMenuBar(this); this-setMenuBar(menubar);2、在菜单栏中添加菜单代码示例通过addMenu来添加菜单//创建菜单 QMenu* menu1new QMenu(文件); QMenu* menu2new QMenu(编辑); QMenu* menu3new QMenu(视图); //将菜单添加进菜单栏中 menubar-addMenu(menu1); menubar-addMenu(menu2); menubar-addMenu(menu3);3、创建菜单项代码示例用QAction来创建菜单项//创建菜单项 QAction* action1new QAction(打开); QAction* action2new QAction(保存); QAction* action3new QAction(关闭); //将菜单项添加到菜单中 menu1-addAction(action1); menu1-addAction(action2); menu1-addAction(action3);4、在菜单栏之间添加分割线代码示例用addSeparator()来实现添加分割线//将菜单项添加到菜单中 menu1-addAction(action1); menu1-addSeparator();//添加分割线 menu1-addAction(action2); menu1-addSeparator();//添加分割线 menu1-addAction(action3);5、综合运用创建菜单和中央控件MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) , ui(new Ui::MainWindow) { ui-setupUi(this); //设置窗口标题 this-setWindowTitle(记事本); //创建菜单栏 QMenuBar* menubarnew QMenuBar(this); //将创建好的菜单栏放入窗口中 this-setMenuBar(menubar); //创建菜单 QMenu* menu1new QMenu(文件); QMenu* menu2new QMenu(编辑); QMenu* menu3new QMenu(视图); //将菜单添加进菜单栏中 menubar-addMenu(menu1); menubar-addMenu(menu2); menubar-addMenu(menu3); //创建菜单项 QAction* action1new QAction(打开); QAction* action2new QAction(保存); QAction* action3new QAction(关闭); //将菜单项添加到菜单中 menu1-addAction(action1); menu1-addSeparator();//添加分割线 menu1-addAction(action2); menu1-addSeparator();//添加分割线 menu1-addAction(action3); //创建一个中央控件 QTextEdit* editnew QTextEdit(this); this-setCentralWidget(edit); edit-setPlaceholderText(此处编写⽂本内容...); }给菜单项添加动作//连接信号槽 connect(action1,QAction::triggered,this,MainWindow::load); connect(action2,QAction::triggered,this,MainWindow::save); connect(action3,QAction::triggered,this,MainWindow::close);void MainWindow::load() { // 选择文件 QString fileName QFileDialog::getOpenFileName( this, 加载文件, QStandardPaths::writableLocation(QStandardPaths::HomeLocation), 文本文件 (*.txt);;所有文件 (*.*) ); // 用户取消 if (fileName.isEmpty()) { qDebug() 用户取消选择; return; } // 打开文件 QFile file(fileName); if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) { qDebug() 文件打开失败: file.errorString(); return; } // 读取内容 QTextStream in(file); in.setEncoding(QStringConverter::Utf8); // 自动处理 UTF-8 QString text in.readAll(); file.close(); // 显示到界面 edit-setPlainText(text); } void MainWindow::save() { // 弹出对话框, 选择写入文件的路径 QFileDialog* dialog new QFileDialog (this); QString fileName dialog-getSaveFileName (this , 保存文件 , C:/Users/1/); qDebug() fileName: fileName; // 写入文件 std::ofstream file(fileName.toStdString().c_str()); if (!file.is_open()) { qDebug() 文件保存失败!; return; } const QString text edit-toPlainText (); file text.toStdString(); file.close (); }二、工具栏工具栏是菜单项的一种快捷方式。可以有多个也可以没有。一般以图片的形式存在。1、创建工具栏调用QMainWindow类的addToolBar()函数来创建工具栏//创建工具栏 QToolBar* toolbarnew QToolBar(this); this-addToolBar(toolbar); //将工具添加到工具栏 toolbar-addAction(action1); toolbar-addAction(action2); //设置图标 QIcon icon1(://open.png); QIcon icon2(://save.png); action1-setIcon(icon1); action2-setIcon(icon2);2、设置停靠位置枚举值含义Qt::LeftToolBarArea停靠在左侧Qt::RightToolBarArea停靠在右侧Qt::TopToolBarArea停靠在顶部Qt::BottomToolBarArea停靠在底部Qt::AllToolBarAreas以上四个位置均可停靠方法一创建工具栏的同时指定其停靠的位置。//创建工具栏 QToolBar* toolbarnew QToolBar(this); //设置工具栏在顶部显示 this-addToolBar(Qt::TopToolBarArea,toolbar);方法二使用QToolBar类提供的setAllowedAreas()函数设置停靠位置。//创建工具栏 QToolBar* toolbarnew QToolBar(this); this-addToolBar(toolbar); //只允许右边停靠 toolbar-setAllowedAreas(Qt::RightToolBarArea);3、设置浮动属性工具栏的浮动属性可以通过QToolBar类提供的setFloatable()函数来设置。//设置可以悬浮 toolbar-setFloatable(true);4、设置移动属性设置工具栏的移动属性可以通过QToolBar类提供的setMovable()函数来设置。//设置不能移动 toolbar-setMovable(false);5、综合运用可以移动任意位置停靠可以悬停//创建工具栏 QToolBar* toolbarnew QToolBar(this); this-addToolBar(toolbar); //只允许右边停靠 toolbar-setAllowedAreas(Qt::AllToolBarAreas); //设置可以悬浮 toolbar-setFloatable(true); //设置不能移动 toolbar-setMovable(true); //将工具添加到工具栏 toolbar-addAction(action1); toolbar-addAction(action2); //设置图标 QIcon icon1(://open.png); QIcon icon2(://save.png); action1-setIcon(icon1); action2-setIcon(icon2);三、状态栏状态栏是应⽤程序中输出简要信息的区域。⼀般位于主窗口的最底部。⼀个窗口中最多只能有⼀个状态栏。在Qt中状态栏是通过QStatusBar类来实现的。1、状态栏的创建通过QMainWindow提供的statusBar()创建状态栏。//创建状态栏 QStatusBar* stbarstatusBar(); //将状态栏设置到窗口 setStatusBar(stbar);2、实时信息通过showMessage()函数来设置一个实时信息。可以控制显示多少秒之后消失。//设置实时信息 stbar-showMessage(运行正常,2000);3、永久信息通过label来建立一个永久信息。利用addPermanentWidget()可以将标签设置到状态栏右边。//建立标签 QLabel* label1new QLabel(左侧永久信息,this); QLabel* label2new QLabel(右侧永久信息,this); //信息显示 stbar-addWidget(label1); //右侧信息显示 stbar-addPermanentWidget(label2);四、浮动窗口浮动窗⼝是通过 QDockWidget类 来实现浮动的功能。1、浮动窗口的创建浮动窗⼝的创建是通过QDockWidget类提供的构造⽅法QDockWidget()函数动态创建的//创建窗口 QDockWidget* dockwidgetnew QDockWidget(浮动窗口,this); addDockWidget(Qt::AllDockWidgetAreas,dockwidget);2、设置停靠位置枚举值含义Qt::LeftDockWidgetArea停靠在主窗口左侧Qt::RightDockWidgetArea停靠在主窗口右侧Qt::TopDockWidgetArea停靠在主窗口顶部Qt::BottomDockWidgetArea停靠在主窗口底部Qt::AllDockWidgetAreas允许在上述所有区域停靠浮动窗⼝是位于中⼼部件的周围。可以通过QDockWidget类中提供setAllowedAreas()函数设置其允许停靠的位置。//设置窗口只允许上下停靠 dockwidget-setAllowedAreas(Qt::TopDockWidgetArea | Qt::BottomDockWidgetArea);五、对话框对话框是 GUI 程序中不可或缺的组成部分。一些不适合在主窗口实现的功能组件可以设置在对话框中。对话框通常是一个顶层窗口出现在程序最上层用于实现短期任务或者简洁的用户交互。Qt 常用的内置对话框有类名作用最常用静态函数QFileDialog选择文件或文件夹getOpenFileName()、getSaveFileName()、getExistingDirectory()QColorDialog选择颜色getColor()QFontDialog选择字体getFont()QInputDialog获取简单用户输入getText()、getInt()、getDouble()、getItem()QMessageBox提示、警告、确认information()、warning()、critical()、question()1、对话框的分类类型说明使用方式模态对话框Modal阻塞其他窗口必须关闭才能继续exec()非模态对话框Modeless不阻塞可与主窗口同时操作show()半模态Application Modal阻塞整个应用而非单个窗口setWindowModality()1️⃣ 模态对话框Modal Dialog定义对话框弹出后阻塞同一应用程序中其他窗口的用户交互直到该对话框被关闭。特点强制用户先处理对话框防止用户在未完成当前任务时操作其他部分通常用于需要用户确认或提供必要信息的场景//当点击 新建 时弹出⼀个模态对话框 connect(action4,QAction::triggered,[](){ QDialog dlog(this); dlog.resize(200,100); dlog.exec(); });2️⃣ 非模态对话框Modeless Dialog定义对话框弹出后阻塞同一应用程序中其他窗口的用户交互直到该对话框被关闭。特点强制用户先处理对话框防止用户在未完成当前任务时操作其他部分通常用于需要用户确认或提供必要信息的场景//当点击 新建 时弹出⼀个非模态对话框 connect(action4,QAction::triggered,[](){ QDialog* dlognew QDialog(this); dlog-resize(200,100);//设置窗口大小 dlog-setAttribute(Qt::WA_DeleteOnClose);//当窗口关闭时自动释放dlog dlog-show(); });3️⃣ 半模态对话框Semi-Modal定义介于模态和非模态之间通过setWindowModality()控制阻塞范围。Qt::WindowModality说明Qt::NonModal非模态不阻塞任何窗口Qt::WindowModal阻塞其父窗口及所有子窗口Qt::ApplicationModal阻塞整个应用程序//当点击 新建 时弹出⼀个半模态对话框 connect(action4,QAction::triggered,[](){ QDialog* dialog new QDialog(this); dialog-setAttribute(Qt::WA_DeleteOnClose); // Qt::WindowModal 表示只阻塞父窗口及其子窗口不阻塞其他顶级窗口 dialog-setWindowModality(Qt::WindowModal); dialog-resize(200, 100); dialog-show(); // 继续使用 show()因为它是非阻塞的 });2、内置对话框对话框类名核心用途文件对话框QFileDialog打开/保存文件、选择文件夹颜色对话框QColorDialog选取颜色字体对话框QFontDialog选取字体样式输入对话框QInputDialog获取文本、数字、列表项消息框QMessageBox提示、警告、错误、确认1️⃣ QFileDialog文件对话框最常用的对话框用于文件系统交互。//文件对话框 QPushButton* btnnew QPushButton(文件对话框,this); btn-move(300,400); connect(btn,QPushButton::clicked,[](){ QString fileName QFileDialog::getOpenFileName( this, 选择文件, QDir::homePath(), // 默认路径 Images (*.png *.jpg);;Text (*.txt);;All (*.*) // 过滤器 ); });2️⃣ QColorDialog颜色对话框用于选取 RGB、HSV 或 CMYK 颜色。//颜色对话框 QPushButton* btnnew QPushButton(颜色对话框,this); btn-move(300,400); connect(btn,QPushButton::clicked,[](){ QColor color QColorDialog::getColor( Qt::red, // 初始颜色 this, 选择颜色, QColorDialog::ShowAlphaChannel // 选项显示透明度 ); if (color.isValid()) { // 用户选择了有效颜色 } });3️⃣ QFontDialog字体对话框用于选择字体族、大小和样式。//字体对话框 QPushButton* btnnew QPushButton(字体对话框,this); btn-move(300,400); connect(btn,QPushButton::clicked,[](){ bool ok; QFont font QFontDialog::getFont( ok, // 返回用户是否点击了 OK QFont(Arial, 12), // 初始字体 this, 选择字体 ); if (ok) { // 用户确认了字体 } });4️⃣ QInputDialog输入对话框轻量级对话框用于获取简单输入。//输入对话框 QPushButton* btnnew QPushButton(输入对话框,this); btn-move(300,400); connect(btn,QPushButton::clicked,[](){ bool ok; QString text QInputDialog::getText( this, 输入, 用户名:, QLineEdit::Normal, 默认文本, ok ); });5️⃣ QMessageBox消息对话框用于向用户显示信息或请求确认。//消息对话框 QPushButton* btnnew QPushButton(消息对话框,this); btn-move(300,400); connect(btn,QPushButton::clicked,[](){ // 信息提示 QMessageBox::information(this, 提示, 操作成功); // 警告 QMessageBox::warning(this, 警告, 磁盘空间不足); // 错误 QMessageBox::critical(this, 错误, 文件无法打开); // 询问带返回值判断 int ret QMessageBox::question( this, 确认, 确定要删除吗, QMessageBox::Yes | QMessageBox::No, QMessageBox::No ); if (ret QMessageBox::Yes) { // 执行删除 } });