【Qt】窗口

窗口

Qt 窗口是通过 QMainWindow 类来实现的,QMainWindow 是为用户提供主窗口的类,继承自 QWidget 类,窗口包含 标题、菜单栏、工具栏、浮动窗口、状态栏和中心部件。

菜单栏 QMenuBar

一个主窗口最多一个菜单栏,一个菜单栏有多个菜单,菜单有多个菜单项。

在这里创建就是选择 QMainWindow 了,QWidget 没有菜单栏等部件。

创建好项目后,在图形化界面中添加菜单和菜单项(在创建菜单项时,若无法添加中文,可以使用粘贴的方式。):

以代码方式添加:

给菜单设置快捷键

给菜单项设置快捷键也是类似:

添加子菜单

就像下图,菜单里还有菜单:


添加分割线

若菜单里的菜单项特别多,可以使用分割线,将同一组的菜单项区分开来,QMenu 提供了 addSeparator 函数添加分割线:

设置图标

工具栏 QToolBar

工具栏是应用程序中集成各种功能实现快捷键使用的一个区域。可以有多个,也可以没有。

设置工具栏停放位置、不允许移动或浮动等:

状态栏 QStatusBar

状态栏是用来输出简要信息的区域。⼀般在窗口的最底部,⼀个窗口中最多⼀个状态栏。在 Qt 中,状态栏是通过 QStatusBar 类来实现的。

状态栏设置消息,也可以添加控件:

浮动窗口 QDockWidget

浮动窗口是通过 QDockWidget 类来实现浮动的功能。浮动窗口一般是位于核心部件的周围,可以有多个。

对话框

对话框是在特殊场景下跳出来的一种窗口,用来实现短期任务或者简洁的用户交互,例如退出时会弹出对话框确定是否保存退出,弹出文件对话框选择文件,弹出输入对话框输入内容等等。

自定义对话框

通过代码方式

项目创建好后,创建 C++ 文件:

此时就生成两个 dialog.h 和 dialog.cpp 文件了:

dialog.h 中:

cpp 复制代码
#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 中:

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

输入对话框,通过弹出对话框让用户输入整数、浮点数或者条目:

也可以输入其他内容:

相关推荐
※DX3906※1 小时前
Java排序算法--全面详解面试中涉及的排序
java·开发语言·数据结构·面试·排序算法
森G1 小时前
8、交叉编译x264----------Opencv移植Arm
qt
笨笨马甲1 小时前
Qt QSS使用指南
开发语言·qt
We་ct2 小时前
LeetCode 77. 组合:DFS回溯+剪枝,高效求解组合问题
开发语言·前端·算法·leetcode·typescript·深度优先·剪枝
格林威2 小时前
工业相机图像高速存储(C#版):内存映射文件方法,附Basler相机C#实战代码!
开发语言·人工智能·数码相机·c#·机器视觉·工业相机·堡盟相机
Nuopiane3 小时前
MyPal3(3)
java·开发语言
lihihi3 小时前
P1650 [ICPC 2004 Shanghai R] 田忌赛马(同洛谷2587)
开发语言·算法·r语言
阿蒙Amon3 小时前
C#常用类库-详解Autofac
开发语言·c#
爱上妖精的尾巴3 小时前
8-18 WPS JS宏 正则表达式-边界匹配
开发语言·javascript·正则表达式·wps·jsa
格林威3 小时前
工业相机图像高速存储(C#版):内存映射文件方法,附堡盟相机C#实战代码!
开发语言·人工智能·数码相机·计算机视觉·c#·工业相机·堡盟相机