当前位置: 首页 > news >正文

展示型网站功能萧山品牌网站建设

展示型网站功能,萧山品牌网站建设,一般做网站所使用的字体,合肥建立网站文章目录 0. 概述1. 菜单栏 QMenuBar1.1 例子1#xff0c;使用图形化界面1.2 例子2#xff0c;使用代码创建1.3 例子3#xff0c;添加快捷键1.4 例子4#xff0c;添加子菜单1.5 例子5#xff0c;添加分割线和图标1.6 内存泄漏问题 2. 工具栏 QToolBar2.1 例子1#xff0c… 文章目录 0. 概述1. 菜单栏 QMenuBar1.1 例子1使用图形化界面1.2 例子2使用代码创建1.3 例子3添加快捷键1.4 例子4添加子菜单1.5 例子5添加分割线和图标1.6 内存泄漏问题 2. 工具栏 QToolBar2.1 例子1创建工具栏2.2 例子2加入菜单栏2.3 例子3设置多个工具栏 3. 状态栏 QStatusBar3.1 例子1创建状态栏 4. 浮动窗口 QDockWidget4.1 例子1创建浮动窗口 5. 对话框 QDialog5.1 非模态对话框5.1.1 例子1创建非模态对话框5.1.2 例子2自定义对话框界面5.1.3 例子3通过图形化界面自定义对话框 5.2 模态对话框5.3 内置对话框5.3.1 消息对话框 QMessageBox5.3.1.1 例子1简单使用5.3.1.2 例子2自定义按钮5.3.1.3 例子3快速创建 5.3.2 颜色对话框 QColorDialog5.3.3 文件对话框 QFileDialog5.3.4 字体对话框 QFontDialog5.3.5 输入对话框 QInputDialog 0. 概述 QMainWindow的组成 一个菜单栏menu bar多个工具栏tool bars工具栏就是把菜单栏中一些比较常用的选项直接放进来了点击它就能快速生效多个浮动窗口铆接部件dock Widget一个状态栏status bar一个中心部件central widget 1. 菜单栏 QMenuBar 一个窗口最多只有一个菜单栏菜单栏(QMenuBar)包含菜单(QMenu)菜单(QMenu)包含菜单项(QAction) 1.1 例子1使用图形化界面 在Qt Designer中创建几个菜单比较简单 1.2 例子2使用代码创建 mainwindow.cpp如下 #include mainwindow.h #include QDebug #include ui_mainwindow.hMainWindow::MainWindow(QWidget* parent): QMainWindow(parent), ui(new Ui::MainWindow) {ui-setupUi(this);// 创建菜单栏QMenuBar* menuBar new QMenuBar();this-setMenuBar(menuBar);// 创建菜单将其添加到菜单栏中QMenu* menu1 new QMenu(文件);QMenu* menu2 new QMenu(新建);QMenu* menu3 new QMenu(编辑);menuBar-addMenu(menu1);menuBar-addMenu(menu2);menuBar-addMenu(menu3);// 创建菜单项将其添加到菜单中QAction* action1 new QAction(新建);QAction* action2 new QAction(保存);QAction* action3 new QAction(退出);menu1-addAction(action1);menu1-addAction(action2);menu1-addAction(action3);// 设置槽函数connect(action1, QAction::triggered, this, MainWindow::handler_new_page);connect(action2, QAction::triggered, this, MainWindow::handler_edit_page);connect(action3, QAction::triggered, this, MainWindow::close); }MainWindow::~MainWindow() {delete ui; }void MainWindow::handler_new_page() {qDebug() void MainWindow::handler_new_page(); }void MainWindow::handler_edit_page() {qDebug() void MainWindow::handler_edit_page(); } 执行效果与1.1一样不过添加了几个槽函数 1.3 例子3添加快捷键 这种方法添加比较简单当然也可以使用QShortcut来设置 #include mainwindow.h #include QDebug #include ui_mainwindow.hMainWindow::MainWindow(QWidget* parent): QMainWindow(parent), ui(new Ui::MainWindow) {ui-setupUi(this);// 创建菜单栏QMenuBar* menuBar new QMenuBar();this-setMenuBar(menuBar);// 创建菜单将其添加到菜单栏中QMenu* menu1 new QMenu(文件(F));QMenu* menu2 new QMenu(编辑(E));QMenu* menu3 new QMenu(查看(V));menuBar-addMenu(menu1);menuBar-addMenu(menu2);menuBar-addMenu(menu3);// 创建菜单项将其添加到菜单中QAction* action1 new QAction(新建标签(1));QAction* action2 new QAction(保存(2));QAction* action3 new QAction(退出(3));menu1-addAction(action1);menu2-addAction(action2);menu3-addAction(action3);// 设置槽函数connect(action1, QAction::triggered, this, MainWindow::handler_new_page);connect(action2, QAction::triggered, this, MainWindow::handler_save_page);connect(action3, QAction::triggered, this, MainWindow::close); }MainWindow::~MainWindow() {delete ui; }void MainWindow::handler_new_page() {qDebug() void MainWindow::handler_new_page(); }void MainWindow::handler_save_page() {qDebug() void MainWindow::handler_save_page(); } 可以使用快捷键选中 1.4 例子4添加子菜单 菜单中可以添加子菜单QMenu通过调用QAction *QMenu::addMenu(QMenu *menu)即可下面是一个例子 MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow) {ui-setupUi(this);// 菜单栏QMenuBar* menuBar new QMenuBar();this-setMenuBar(menuBar);// 菜单QMenu* menu1 new QMenu(menu1);menuBar-addMenu(menu1);// 子菜单QMenu* child_Menu1 new QMenu(child_Menu1);QMenu* child_Menu2 new QMenu(child_Menu2);QMenu* child_child_Menu1 new QMenu(child_child_Menu1);QMenu* child_child_Menu2 new QMenu(child_child_Menu2);// 设置父子关系menu1-addMenu(child_Menu1);menu1-addMenu(child_Menu2);child_Menu1-addMenu(child_child_Menu1);child_Menu2-addMenu(child_child_Menu2);// 菜单项QAction* action1 new QAction(action1);QAction* action2 new QAction(action2);child_child_Menu1-addAction(action1);child_child_Menu2-addAction(action2); } 运行结果如下child_child_Menu2下有一个action2截图没有截出来 1.5 例子5添加分割线和图标 给QMenu中的不同菜单添加分割线可以使用QAction *QMenu::addSeparator()函数设置图标使用void setIcon(const QIcon icon)函数下面是例子已经在qrc中导入了图片 MainWindow::MainWindow(QWidget* parent): QMainWindow(parent), ui(new Ui::MainWindow) {ui-setupUi(this);// 菜单栏QMenuBar* menuBar new QMenuBar();this-setMenuBar(menuBar);// 菜单和菜单项QMenu* menu1 new QMenu(文件);menuBar-addMenu(menu1);QAction* action1 new QAction(新建);menu1-addAction(action1);menu1-addSeparator();QAction* action2 new QAction(保存);menu1-addAction(action2);menu1-addSeparator();QAction* action3 new QAction(退出);menu1-addAction(action3);menu1-addSeparator();// 设置图标action1-setIcon(QIcon(:/img/new.png));action2-setIcon(QIcon(:/img/save.png));action3-setIcon(QIcon(:/img/exit.png)); }运行结果如下 1.6 内存泄漏问题 上面几个例子中都写了这样的代码 QMenuBar* menuBar new QMenuBar(); this-setMenuBar(menuBar);如果我们勾选的是不自动生成ui文件就不会有问题但是勾选自动生成ui之后Qt会帮我们生成一个默认的QMenuBar当调用上面的代码后我们自己创建的menuBar会替换默认的菜单栏这样Qt帮我们生成的默认的菜单栏就失去控制了造成内存泄漏。一种比较好的写法如下 QMenuBar* menuBar this-menuBar(); // this-setMenuBar(menuBar);QMenuBar *QMainWindow::menuBar() const会返回当前窗口的菜单栏如果没有就会创建一个。 2. 工具栏 QToolBar 工具栏是应用程序中集成各种功能实现快捷键使用的区域。可以有多个也可以没有它并不是应用程序中必须存在的组件。它是一个可以动的组件它的元素可以是各种窗口组件通常以图标按钮的方式存在下图是一个工具栏的示意图。 2.1 例子1创建工具栏 #include mainwindow.h #include qtoolbar.h #include ui_mainwindow.hMainWindow::MainWindow(QWidget* parent): QMainWindow(parent), ui(new Ui::MainWindow) {ui-setupUi(this);// 创建工具栏QToolBar* toolBar new QToolBar();this-addToolBar(toolBar);// 创建QAction, 设置图标QAction* action1 new QAction(新建);QAction* action2 new QAction(保存);action1-setIcon(QIcon(:/new.png));action2-setIcon(QIcon(:/save.png));// 将QAction添加到QToolBar中toolBar-addAction(action1);toolBar-addAction(action2);// 设置槽函数connect(action1, QAction::triggered, this, MainWindow::handler_new_file);connect(action2, QAction::triggered, this, MainWindow::handler_save_file); }MainWindow::~MainWindow() {delete ui; }void MainWindow::handler_new_file() {qDebug() void MainWindow::handler_new_file(); }void MainWindow::handler_save_file() {qDebug() void MainWindow::handler_save_file(); }运行结果如下 可以看到图标把文字给覆盖了但当我们鼠标移到该图标上时仍会看到我们当时设置的文字 可以通过void setToolTip(const QString tip)来设置提示信息给上面的代码添加 // 添加toolTip action1-setToolTip(新建操作!!!); action2-setToolTip(保存操作!!!);结果变为 2.2 例子2加入菜单栏 工具栏经常和菜单栏组合使用如下面的例子 MainWindow::MainWindow(QWidget* parent): QMainWindow(parent), ui(new Ui::MainWindow) {ui-setupUi(this);// 创建菜单栏QMenuBar* menuBar new QMenuBar();this-setMenuBar(menuBar);// 创建菜单QMenu* menu1 new QMenu(文件);QMenu* menu2 new QMenu(编辑);// 添加菜单menuBar-addMenu(menu1);menuBar-addMenu(menu2);// 创建工具栏QToolBar* toolBar new QToolBar();this-addToolBar(toolBar);// 创建QAction, 设置图标QAction* action1 new QAction(新建);QAction* action2 new QAction(保存);action1-setIcon(QIcon(:/new.png));action2-setIcon(QIcon(:/save.png));// 将QAction添加到QMenu中menu1-addAction(action1);menu1-addAction(action2);// 将QAction添加到QToolBar中toolBar-addAction(action1);toolBar-addAction(action2);// 设置槽函数connect(action1, QAction::triggered, this, MainWindow::handler_new_file);connect(action2, QAction::triggered, this, MainWindow::handler_save_file); }运行结果如下 2.3 例子3设置多个工具栏 使用void QMainWindow::addToolBar(Qt::ToolBarArea area, QToolBar *toolbar)可以将工具栏添加到主窗口的指定位置中下面是Qt::ToolBarArea一些值 常量名称值解释Qt::LeftToolBarArea0x1工具栏位于主窗口的左侧Qt::RightToolBarArea0x2工具栏位于主窗口的右侧Qt::TopToolBarArea0x4工具栏位于主窗口的顶部Qt::BottomToolBarArea0x8工具栏位于主窗口的底部Qt::AllToolBarAreasToolBarArea_Mask包含所有工具栏区域Qt::NoToolBarArea0不包含任何工具栏区域 void setAllowedAreas(Qt::ToolBarAreas areas)可以设置QToolBar的停靠位置 void setMovable(bool movable)可以设置QToolBar能否移动 void setFloatable(bool floatable)可以设置QToolBar能否浮动在窗口中间 mainwindow.cpp部分代码如下 MainWindow::MainWindow(QWidget* parent): QMainWindow(parent), ui(new Ui::MainWindow) {ui-setupUi(this);// 创建工具栏并添加QToolBar* toolBar1 new QToolBar();QToolBar* toolBar2 new QToolBar();this-addToolBar(Qt::TopToolBarArea, toolBar1); // 最初停靠在上面this-addToolBar(Qt::LeftToolBarArea, toolBar2); // 最初停靠在左边toolBar1-setMovable(false); // 设置不能移动toolBar2-setAllowedAreas(Qt::LeftToolBarArea | Qt::RightToolBarArea); // 设置能停靠在左边和右边toolBar2-setFloatable(false); // 设置不能浮动// 添加QActionQAction* action1 new QAction(action1);QAction* action2 new QAction(action2);QAction* action3 new QAction(action3);QAction* action4 new QAction(action4);toolBar1-addAction(action1);toolBar1-addAction(action2);toolBar2-addAction(action3);toolBar2-addAction(action4); }运行截图如下 3. 状态栏 QStatusBar 状态栏一般位于主窗口的最底部一个窗口最多只能有一个状态栏。在Qt中状态栏中可以显示的信息有 实时信息如当前程序状态永久信息如程序版本号机构名称进度信息如进度条提示百分比提示 3.1 例子1创建状态栏 void QStatusBar::showMessage(const QString message, int timeout 0)用于在状态栏显示临时消息的函数。timeout用于指定消息显示的持续时间以毫秒为单位。这是个槽函数void QStatusBar::addWidget(QWidget *widget, int stretch 0)用于向状态栏中添加一个部件放在左侧void QStatusBar::addPermanentWidget(QWidget *widget, int stretch 0)这个添加的部件位于右侧不会被状态栏的消息如 showMessage() 显示的消息覆盖。 MainWindow::MainWindow(QWidget* parent): QMainWindow(parent), ui(new Ui::MainWindow) {ui-setupUi(this);// 状态栏QStatusBar* statusBar this-statusBar(); // 有就获取没有就创建// this-setStatusBar(statusBar);// // 显示实时信息// statusBar-showMessage(正在保存中..., 3000);// 添加部件QLabel* label new QLabel(状态栏标签); // 标签progress new QProgressBar(); // 进度条timer new QTimer(progress); // 定时器timer-start(100); // 每100ms发送一次信号progress-setRange(0, 100); // 设置最小值和最大值connect(timer, QTimer::timeout, this, MainWindow::timerHandler);statusBar-addWidget(label, 1);statusBar-addWidget(progress, 2);// 添加永久信息QLabel* label2 new QLabel(PermanentWidge...);statusBar-addPermanentWidget(label2, 3); }void MainWindow::timerHandler() {int val progress-value();if (val 100 || val 99) {progress-setValue(100);timer-stop();QTimer::singleShot(1000, this, [this]() { // 停留1秒后重置progress-setValue(0);timer-start(100);});} else {progress-setValue(val 5);} }运行结果如下两个lable一个进度条 4. 浮动窗口 QDockWidget 浮动窗口也叫做铆接部件可以有多个一般位于核心部件的周围 4.1 例子1创建浮动窗口 使用void QMainWindow::addDockWidget(Qt::DockWidgetArea area, QDockWidget *dockwidget)向窗口中添加浮动窗口下面是Qt::DockWidgetArea的取值 常量名称值说明Qt::LeftDockWidgetArea0x1主窗口的左侧区域Qt::RightDockWidgetArea0x2主窗口的右侧区域Qt::TopDockWidgetArea0x4主窗口的顶部区域Qt::BottomDockWidgetArea0x8主窗口的底部区域Qt::AllDockWidgetAreasDockWidgetArea_Mask包含所有停靠区域Qt::NoDockWidgetArea0不允许停靠任何区域 void QDockWidget::setWidget(QWidget *widget)用于将一个 QWidget 对象设置为 QDockWidget 的内容部件。 void setAllowedAreas(Qt::DockWidgetAreas areas)可以设置浮动窗口可以移动的位置 MainWindow::MainWindow(QWidget* parent): QMainWindow(parent), ui(new Ui::MainWindow) {ui-setupUi(this);// 创建浮动窗口QDockWidget* dockWidget new QDockWidget(my_dock_widget, this);this-addDockWidget(Qt::LeftDockWidgetArea, dockWidget); // 将浮动窗口放置在左边// 创建widget1QWidget* widget new QWidget();QVBoxLayout* layout new QVBoxLayout();QLabel* label new QLabel(这是一段文字描述..., widget);QPushButton* btn new QPushButton(按钮..., widget);layout-addWidget(label);layout-addWidget(btn);widget-setLayout(layout); // 设置布局dockWidget-setWidget(widget); // 给浮动窗口添加widgetdockWidget-setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea); // 允许放在左边或者右边 }运行结果如下 5. 对话框 QDialog 一些不适合在主窗口上实现的功能组件可以设置在对话框中。对话框是一个顶层窗口出现在程序最上层用于实现短期任务或者简洁的用户交互。常用的对话框有QFiledialog(文件对话框)QColorDialog(颜色对话框)QFontDialog(字体对话框)QInputDialog(输入对话框)QMessageBox(消息框) 分为模态对话框和非模态对话框 5.1 非模态对话框 非模态对话框显示后独立存在可以与父窗口进行交互是一种非阻塞式的对话框。需要在堆上创建在栈上创建后一闪而过同时需要调用void QWidget::setAttributeQt::WidgetAttribute attribut*, bool on true)函数来设置Qt::WA_DeleteOnClose表示点击关闭按钮时释放内存调用void QWidget::show()来显示对话框 5.1.1 例子1创建非模态对话框 在Qt Designer中创建一个按钮让该按钮按下后创建满屏幕的对话框 #include mainwindow.h #include QDialog #include ui_mainwindow.h #include windows.hMainWindow::MainWindow(QWidget* parent): QMainWindow(parent), ui(new Ui::MainWindow) {ui-setupUi(this); }void MainWindow::handleDialog() {for (int i 0; i 10; i) {for (int j 0; j 10; j) {QDialog* dialog new QDialog(this);dialog-resize(192, 108);dialog-move(192 * j, 108 * i);dialog-setWindowTitle(对话框);Sleep(500);dialog-show();::MessageBeep(MB_ICONERROR); // 播放声音dialog-setAttribute(Qt::WA_DeleteOnClose);}} }MainWindow::~MainWindow() {delete ui; }void MainWindow::on_pushButton_clicked() {handleDialog(); }5.1.2 例子2自定义对话框界面 下面有一个dialog.h #ifndef DIALOG_H #define DIALOG_H#include QDialogclass Dialog : public QDialog {Q_OBJECT public:Dialog(QWidget* parent);~Dialog(); };#endif // DIALOG_Hdialog.cpp #include dialog.h #include QLabel #include QPushButton #include QVBoxLayoutDialog::Dialog(QWidget* parent): QDialog(parent) {this-setAttribute(Qt::WA_DeleteOnClose); // 设置自动销毁// 创建布局QVBoxLayout* layout new QVBoxLayout();this-setLayout(layout);// 添加一个QLabel和一个按钮QLabel* label new QLabel(显示文本...);QPushButton* button new QPushButton(关闭);layout-addWidget(label);layout-addWidget(button);connect(button, QPushButton::clicked, this, [this]() { this-close(); }); }Dialog::~Dialog() {qDebug() Dialog::~Dialog(); }mainwindow.cpp #include mainwindow.h #include dialog.h #include ui_mainwindow.hMainWindow::MainWindow(QWidget* parent): QMainWindow(parent), ui(new Ui::MainWindow) {ui-setupUi(this); }MainWindow::~MainWindow() {delete ui; }void MainWindow::on_pushButton_clicked() {Dialog* dialog new Dialog(this);dialog-resize(300, 200);dialog-show(); }如上就可以使用自己创建的Dialog了。 5.1.3 例子3通过图形化界面自定义对话框 首先新建文件选择如下选项 接着模版选择Dialog without buttons选其它的也可以 接着一直点击下一步最后会发现Qt帮我们生成了一个ui文件一个.h和一个.cpp文件 在dialog.ui中创建一个QLabel和一个QPushButton dialog.cpp代码如下 #include dialog.h #include ui_dialog.hDialog::Dialog(QWidget* parent): QDialog(parent), ui(new Ui::Dialog) {ui-setupUi(this);this-setAttribute(Qt::WA_DeleteOnClose); // 关闭时销毁connect(ui-pushButton, QPushButton::clicked, this, [this]() { this-close(); }); }Dialog::~Dialog() {qDebug() Dialog::~Dialog();delete ui; }在mainwindow.ui中创建一个按钮设置槽函数。mainwindow.cpp的槽函数如下 void MainWindow::on_pushButton_clicked() {Dialog* dialog new Dialog(this);dialog-show(); }运行结果如下 5.2 模态对话框 模态对话框显示后无法与父窗口进行交互是一种阻塞式的对话框。使用int QDialog::exec()来调用。使用void setModal(bool modal)可以设置模态modalfalse非模态。使用int QDialog::exec()会忽略该设置直接就是模态。 5.3 内置对话框 5.3.1 消息对话框 QMessageBox 消息对话框主要为用户提示重要信息让用户进行选择操作 5.3.1.1 例子1简单使用 下面是用到的几个函数 void setIcon(QMessageBox::Icon)可以设置 QMessageBox 消息框的图标。下面是QMessageBox::Icon的取值 QMessageBox::setStandardButtons(QMessageBox::StandardButtons buttons) 是一个用于设置 QMessageBox 消息框中显示的标准按钮的。下面是buttons的取值 QMessageBox::Ok显示“确定”按钮。QMessageBox::Cancel显示“取消”按钮。QMessageBox::Yes显示“是”按钮。QMessageBox::No显示“否”按钮。QMessageBox::Save显示“保存”按钮。QMessageBox::SaveAll显示“全部保存”按钮。QMessageBox::Open显示“打开”按钮。QMessageBox::YesToAll显示“全部是”按钮。QMessageBox::NoToAll显示“全部否”按钮。QMessageBox::Abort显示“中断”按钮。QMessageBox::Retry显示“重试”按钮。QMessageBox::Ignore显示“忽略”按钮。QMessageBox::Close显示“关闭”按钮。QMessageBox::Help显示“帮助”按钮。 QMessageBox::setText(const QString text) 是一个用于设置 QMessageBox 消息框中主要消息文本。 QMessageBox::setInformativeText 用于在消息框中添加一段补充信息文本通常用于提供更多上下文或解释以帮助用户理解消息的内容。 int QMessageBox::exec() 用于显示对话框并返回用户选择的按钮。返回值是 QMessageBox::StandardButton 枚举类型或自定义按钮的角色值 下面是一个例子 void MainWindow::on_pushButton_clicked() {QMessageBox* message new QMessageBox();message-setWindowTitle(提示信息);message-setIcon(QMessageBox::Information);message-setText(文件已经被修改了);message-setInformativeText(补充文本...);message-setStandardButtons(QMessageBox::Ok | QMessageBox::Cancel | QMessageBox::Ignore);auto ret message-exec();switch (ret){case QMessageBox::Ok:qDebug() Ok clicked!;break;case QMessageBox::Cancel:qDebug() Cancel clicked!;break;case QMessageBox::Ignore:qDebug() Ignore clicked!;break;default:qDebug() what?!!;break;}message-setAttribute(Qt::WA_DeleteOnClose); // 关闭后进行清理 }运行结果如下图 5.3.1.2 例子2自定义按钮 QMessageBox::addButton(QAbstractButton *button, QMessageBox::ButtonRole role) 用于向 QMessageBox 消息框中添加自定义按钮role指定按钮在消息框中的角色。下面是role的取值 QMessageBox::AcceptRole接受操作如“确定”按钮。QMessageBox::RejectRole拒绝操作如“取消”按钮。QMessageBox::DestructiveRole破坏性操作如“删除”按钮。QMessageBox::ActionRole特定操作如“保存”、“打开”按钮。QMessageBox::HelpRole帮助操作如“帮助”按钮。QMessageBox::YesRole问题的“是”选项。QMessageBox::NoRole问题的“否”选项。 QMessageBox::clickedButton() const 用于获取用户在消息框中点击的按钮。 如果用户点击了某个按钮返回该按钮的指针。如果用户关闭了消息框而未点击任何按钮返回 nullptr。 下面是一个例子 void MainWindow::on_pushButton_clicked() {QMessageBox* message new QMessageBox();message-setWindowTitle(提示信息);message-setIcon(QMessageBox::Information);message-setText(文件已经被修改了);message-setInformativeText(补充文本...);// 设置自定义按钮QPushButton* btn1 new QPushButton(确认);message-addButton(btn1, QMessageBox::AcceptRole);QPushButton* btn2 new QPushButton(取消);message-addButton(btn2, QMessageBox::RejectRole);message-exec();if (message-clickedButton() btn1) {qDebug() btn1 clicked!;} else if (message-clickedButton() btn2) {qDebug() btn2 clicked!;} else {qDebug() you clicked what?;}message-setAttribute(Qt::WA_DeleteOnClose); // 关闭后进行清理 }运行结果如下 5.3.1.3 例子3快速创建 QMessageBox::critical 是 QMessageBox 提供的静态函数用于快速显示一个带有“错误”图标的对话框。 参数 QWidget *parent消息框的父窗口。const QString title消息框的标题。const QString text消息框的主要文本。QMessageBox::StandardButtons buttons QMessageBox::Ok可选参数指定消息框中的按钮QMessageBox::Ok 是默认值。QMessageBox::StandardButton defaultButton QMessageBox::NoButton可选参数指定消息框的默认按钮。 返回值 返回值为 QMessageBox::StandardButton表示用户点击的按钮。 同样的函数还有warningquestioninformation下面是使用例子 void MainWindow::on_pushButton_clicked() {int res QMessageBox::critical(this, 错误窗口, 发生错误!, QMessageBox::Ok | QMessageBox::Ignore);if(res QMessageBox::Ok) {qDebug() QMessageBox::Ok;} else if(res QMessageBox::Ignore) {qDebug() QMessageBox::Ignore;} else {qDebug() what?!!!;} }很简单的就创建除了一个对话框 5.3.2 颜色对话框 QColorDialog 使用如下的静态函数 QColor QColorDialog::getColor(const QColor initial Qt::white, QWidget *parent nullptr, const QString title QString(), QColorDialog::ColorDialogOptions options ColorDialogOptions()) 是 Qt 中用于获取颜色的函数它会打开一个颜色对话框让用户选择颜色。 功能 打开一个颜色对话框。返回用户选择的颜色。如果用户取消对话框返回初始颜色。 参数 const QColor initial Qt::white 指定对话框中初始显示的颜色默认值为白色 (Qt::white)。 QWidget *parent nullptr 指定对话框的父窗口。如果不指定对话框将作为顶层窗口。 const QString title QString() 对话框的标题默认为空字符串。 QColorDialog::ColorDialogOptions options ColorDialogOptions() 对话框的附加选项可以通过 QColorDialog::ColorDialogOptions 枚举指定。下面是枚举的值 QColorDialog::ShowAlphaChannel 值0x00000001描述允许用户在颜色对话框中选择颜色的透明度alpha 通道。这使得用户可以选择带有透明度的颜色值。 QColorDialog::NoButtons 值0x00000002描述不显示“确定”和“取消”按钮。这通常是用于“实时”对话框例如在不关闭对话框的情况下直接应用所选颜色通过其他方式如键盘快捷键或控件交互关闭对话框。 QColorDialog::DontUseNativeDialog 值0x00000004描述不使用操作系统的原生颜色对话框而是使用 Qt 提供的标准颜色对话框。这在某些情况下可能更灵活例如当需要自定义对话框行为或在跨平台开发中确保一致的外观和行为时。 返回值 返回用户选择的颜色。如果用户取消对话框返回invalid。 用户选择颜色更换背景下面是一个例子。 void MainWindow::on_pushButton_clicked() {// QColorDialog* color new QColorDialog();// color-exec();QColor color QColorDialog::getColor(QColor(Qt::white), this, 颜色选择);if (!color.isValid())return; // 没有选择就什么都不做qDebug() color;// 更换背景颜色char style[1024];sprintf(style, background-color: rgb(%d, %d, %d);, color.red(), color.green(), color.blue());this-setStyleSheet(style); }运行结果如下 5.3.3 文件对话框 QFileDialog 使用如下的静态函数 QString QFileDialog::getOpenFileName() 是 QFileDialog 用于打开一个文件选择对话框并返回用户选择的文件路径。以下是该函数的详细信息 功能 打开一个文件选择对话框允许用户选择一个文件。如果用户取消了对话框返回一个空字符串。返回值是一个 QString表示用户选择的文件路径。 参数 QWidget *parent nullptr 指定文件对话框的父窗口。如果不指定对话框将作为顶层窗口。 const QString caption QString() 设置对话框的标题。 const QString dir QString() 设置对话框打开时的默认目录。 const QString filter QString() 设置文件过滤器用于过滤文件类型。例如Images (*.png *.jpg) 表示只显示 .png 和 .jpg 文件。 QString *selectedFilter nullptr 指向一个 QString 指针用于存储用户选择的过滤器。如果用户更改了过滤器可以通过此参数获取新的过滤器。 QFileDialog::Options options Options() 对话框的附加选项可以通过 QFileDialog::Options 枚举指定。下面是该枚举的部分值 常量值值描述QFileDialog::ShowDirsOnly0x00000001指示文件对话框只显示目录不允许选择文件。QFileDialog::DontResolveSymlinks0x00000002不自动解析符号链接的内容。QFileDialog::DontConfirmOverwrite0x00000004在保存文件时QFileDialog::accept() 不会弹出确认覆盖对话框。QFileDialog::DontUseNativeDialog0x00000008不使用操作系统的原生文件对话框改用 Qt 的实现。QFileDialog::ReadOnly0x00000010对话框以只读模式打开。QFileDialog::HideNameFilterDetails0x00000020隐藏文件过滤器的详细信息仅显示名称。QFileDialog::DontClickOpenButtons0x00000040在文件预览中用户单击文件不会自动激活 “Open” 按钮。QFileDialog::OptionMask0x0000FFFF用于掩码选项值。QFileDialog::DontUseSheet0x00010000在 macOS 上不作为工作表显示文件对话框。 返回值 返回用户选择的文件路径类型为 QString。如果用户取消对话框返回空字符串 (QString())。 getSaveFileName()与该函数类似只不过打开的是保存文件 void MainWindow::on_pushButton_clicked() {QFileDialog::getOpenFileName(this, 打开文件, E:\\data); }void MainWindow::on_pushButton_2_clicked() {QFileDialog::getSaveFileName(this, 保存文件, E:\\data); }运行结果如下 5.3.4 字体对话框 QFontDialog QFont QFontDialog::getFont(bool *ok, const QFont initial, QWidget *parent nullptr, const QString title QString(), QFontDialog::FontDialogOptions options FontDialogOptions()) 用于显示字体选择对话框的函数以下是对它的详细介绍 功能 打开一个字体选择对话框允许用户选择字体。返回用户选择的字体。如果用户取消了对话框返回初始字体或默认字体。 参数 bool *ok 指向一个布尔值的指针用于指示用户是否点击了 “确定” 按钮。如果用户点击了 “确定”ok 的值为 true如果用户取消了对话框或关闭了窗口ok 的值为 false。 const QFont initial 指定对话框中初始显示的字体默认值为当前应用程序的字体。 QWidget *parent nullptr 指定对话框的父窗口。如果为 nullptr对话框将作为顶层窗口。 const QString title QString() 设置对话框的标题。默认为空字符串。 QFontDialog::FontDialogOptions options FontDialogOptions() 指定对话框的附加选项可以通过 QFontDialog::FontDialogOptions 枚举指定。 返回值 返回用户选择的字体类型为 QFont。如果用户取消了对话框返回初始字体或默认字体。 下面是一个例子更换按钮的字体 void MainWindow::on_pushButton_clicked() {bool ok;QFont font QFontDialog::getFont(ok);if (ok) {ui-pushButton-setFont(font);} else {qDebug() you canceled the dialog.;} }运行结果如下 5.3.5 输入对话框 QInputDialog 这几个函数都是类似的只介绍其中1个 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()) getInt 是 Qt 框架中的一个便捷函数用于显示一个输入对话框让用户输入一个整数值。以下是关于这个函数的详细信息 功能 显示一个输入对话框提示用户输入一个整数值。返回用户输入的整数值。如果用户取消了对话框返回默认值通常是 0 或指定的初始值。 参数 QWidget *parent nullptr 指定输入对话框的父窗口。如果为 nullptr对话框将作为顶层窗口。 const QString title 设置输入对话框的标题。 const QString label 设置输入对话框中的提示标签用于描述输入的内容。 int value 0 指定输入对话框中初始显示的值默认为 0。 int min -2147483647 指定输入值的最小范围默认为 -214748364732 位整数的最小值。 int max 2147483647 指定输入值的最大范围默认为 214748364732 位整数的最大值。 int step 1 指定输入值的步长默认为 1。 bool *ok nullptr 指向一个布尔值的指针用于指示用户是否点击了“确定”按钮。如果用户点击了“确定”*ok 的值为 true如果用户取消了对话框或关闭了窗口*ok 的值为 false。 Qt::WindowFlags flags Qt::WindowFlags() 指定输入对话框的窗口标志用于控制对话框的外观和行为。 返回值 返回用户输入的整数值。如果用户取消了对话框返回值为 value初始值。 下面是一个例子在mainwindow.ui中创建几个按钮 设置槽函数 void MainWindow::on_pushButton_clicked() {auto res QInputDialog::getInt(this, 整形输入, 请输入一个整数);qDebug() res; }void MainWindow::on_pushButton_2_clicked() {auto res QInputDialog::getMultiLineText(this, 多行输入, 请输入文本: );qDebug() res; }void MainWindow::on_pushButton_3_clicked() {QStringList items;items Spring Summer Fall Winter;auto res QInputDialog::getItem(this, 条目输入, 请输入提条目: , items);qDebug() res; }void MainWindow::on_pushButton_4_clicked() {auto res QInputDialog::getText(this, 字符串输入, 请输入字符串);qDebug() res; }运行结果如下按顺序点击
http://www.tj-hxxt.cn/news/226335.html

相关文章:

  • 网站的模糊搜索怎么做商城网站建设行情
  • 安徽和住房建设厅网站网站建设和赚钱方法
  • 自己做购物网站怎么做大连公司注册网站
  • 安徽茶叶学会 网站建设网站设计建设方案
  • 宣武青岛网站建设苏州正规制作网站公司
  • 做一个推广网站多少钱免费外链网盘
  • 时尚网站欣赏代理商加盟网站
  • 广州网站备案号吉林建站
  • 采集站seo课程人们常说的蓝领是从事什么工作的
  • 门户网站特点一小时赚8000元的游戏
  • 银川网站公司网站租空间多少钱
  • 时尚女装网站设计河北建设工程造价信息网站
  • 网站母版页怎么做北京网站优化厂家
  • 创建网站免费注册网站360做的标记如何取消
  • 网站页面设计报价表许昌旅游网站建设现状
  • 哪个网站可以卖自己的设计住房城乡建设部网站诚信平台
  • 宝塔网站建设跳转微信可打开为什么四川省建设厅网站打不开
  • 西昌建设招聘信息网站网站举报平台建设情况
  • 怎么样做美术招生信息网站网架公司的螺丝是不是公司安好
  • 信息网站大全电子商务网站建设 百度文库
  • 西宁市网站建设网站建设入门教学
  • 腾讯云手动搭建wordpress个人站点做网站的公司多吗
  • 国内jsp网站有哪些低价网站建设湘潭
  • 企业网站定制开发流程网站如何做分享
  • 模板做的网站 怎么提升排名品牌设计需要学什么
  • 自己怎么创建免费网站吗进一步加大网站集约化建设力度
  • 先建网站还是先做网页wordpress推介链接插件
  • 哪些网站做推广性价比高黄冈网站推广优化技巧
  • 做衣服哪个网站好保定市做网站的电话
  • 网站做icp备案需要多久单位网站建设费用什么会计科目