【Qt】窗口
窗口
- 菜单栏 QMenuBar
- 给菜单设置快捷键
- 添加子菜单
- 添加分割线
- 设置图标
- 工具栏 QToolBar
- 状态栏 QStatusBar
- 浮动窗口 QDockWidget
- 对话框
- 自定义对话框
- 通过代码方式
- 通过图形化方式
- 模态对话框
- Qt 内置对话框
- 消息对话框 QMessageBox
- 颜色对话框 QColorDialog
- 文件对话框 QFileDialog
- 字体对话框 QFontDialog
- 输入对话框 QInputDialog
Qt 窗口是通过 QMainWindow 类来实现的,QMainWindow 是为用户提供主窗口的类,继承自 QWidget 类,窗口包含 标题、菜单栏、工具栏、浮动窗口、状态栏和中心部件。
菜单栏 QMenuBar
一个主窗口最多一个菜单栏,一个菜单栏有多个菜单,菜单有多个菜单项。
在这里创建就是选择 QMainWindow 了,QWidget 没有菜单栏等部件。
创建好项目后,在图形化界面中添加菜单和菜单项(在创建菜单项时,若无法添加中文,可以使用粘贴的方式。):
以代码方式添加:
给菜单设置快捷键
给菜单项设置快捷键也是类似:
添加子菜单
就像下图,菜单里还有菜单:
添加分割线
若菜单里的菜单项特别多,可以使用分割线,将同一组的菜单项区分开来,QMenu 提供了 addSeparator 函数添加分割线:
设置图标
工具栏 QToolBar
工具栏是应用程序中集成各种功能实现快捷键使用的一个区域。可以有多个,也可以没有。
设置工具栏停放位置、不允许移动或浮动等:
状态栏 QStatusBar
状态栏是用来输出简要信息的区域。⼀般在窗口的最底部,⼀个窗口中最多⼀个状态栏。在 Qt 中,状态栏是通过 QStatusBar 类来实现的。
状态栏设置消息,也可以添加控件:
浮动窗口 QDockWidget
浮动窗口是通过 QDockWidget 类来实现浮动的功能。浮动窗口一般是位于核心部件的周围,可以有多个。
对话框
对话框是在特殊场景下跳出来的一种窗口,用来实现短期任务或者简洁的用户交互,例如退出时会弹出对话框确定是否保存退出,弹出文件对话框选择文件,弹出输入对话框输入内容等等。
自定义对话框
通过代码方式
项目创建好后,创建 C++ 文件:
此时就生成两个 dialog.h 和 dialog.cpp 文件了:
dialog.h 中:
#ifndef DIALOG_H
#define DIALOG_H
#include <QDialog>
class Dialog : public QDialog
{
Q_OBJECT
public:
Dialog(QWidget* parent);
void handle();
};
#endif // DIALOG_H
dialog.cpp 中:
#include "dialog.h"
#include <QPushButton>
#include <QLabel>
#include <QVBoxLayout>
Dialog::Dialog(QWidget* parent):QDialog(parent)
{
//创建出一些控件,加入到Dialog中
QVBoxLayout* layout = new QVBoxLayout;
this->setLayout(layout);
QLabel* label = new QLabel("这是一个对话框", this);
QPushButton* button = new QPushButton("关闭", this);
layout->addWidget(label);
layout->addWidget(button);
connect(button, &QPushButton::clicked, this, &Dialog::handle);
}
void Dialog::handle()
{
this->close();
}
通过图形化方式
创建一个新的 ui 文件以及对应的类:
一直下一步完成即可。
双击进去添加一些想要的控件:
模态对话框
模态:指弹出对话框,此时就无法操作父窗口,必须完成对话框内部的操作,关闭对话框之后,才可继续操作父窗口。
非模态:指弹出对话框,也可继续操作父窗口。
将 dialog->show() 换成 dialog.exec() 后,只能将弹出的对话框关闭后才可对父窗口进行操作。
Qt 内置对话框
Qt 提供了多种可复用的对话框类型,即 Qt 标准对话框。Qt 标准对话框全部继承于 QDialog类。例如 QMessageBox、QFileDialog、QInputDialog等。
消息对话框 QMessageBox
QMessageBox 用来显示一个消息给用户,并让用户进行一个简单的选择。
自定义按钮:
通过获取 exec 的返回值来确定用户点击的按钮:
还可以使用静态函数:
颜色对话框 QColorDialog
颜色对话框允许用户选择颜色,继承 QDialog 类。这里使用 getColor 函数,该函数可以弹出一个模态对话框,用户选择颜色之后,点击确定,对话框关闭,函数就可以返回用户选择的颜色值。
文件对话框 QFileDialog
文件对话框用于应用程序中需要打开一个外部文件或需要将当前内容存储到指定的外部文件。同样使用静态函数来实现打开对话框:
字体对话框 QFontDialog
Qt 中提供了预定义的字体对话框类 QFontDialog,用于提供选择字体的对话框部件。
输入对话框 QInputDialog
输入对话框,通过弹出对话框让用户输入整数、浮点数或者条目:
也可以输入其他内容: