【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

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

也可以输入其他内容:

相关推荐
一只小bit几秒前
C++之初识模版
开发语言·c++
王磊鑫29 分钟前
C语言小项目——通讯录
c语言·开发语言
钢铁男儿32 分钟前
C# 委托和事件(事件)
开发语言·c#
Ai 编码助手1 小时前
在 Go 语言中如何高效地处理集合
开发语言·后端·golang
喜-喜1 小时前
C# HTTP/HTTPS 请求测试小工具
开发语言·http·c#
ℳ₯㎕ddzོꦿ࿐1 小时前
解决Python 在 Flask 开发模式下定时任务启动两次的问题
开发语言·python·flask
一水鉴天1 小时前
为AI聊天工具添加一个知识系统 之63 详细设计 之4:AI操作系统 之2 智能合约
开发语言·人工智能·python
apz_end2 小时前
埃氏算法C++实现: 快速输出质数( 素数 )
开发语言·c++·算法·埃氏算法
轩辕烨瑾3 小时前
C#语言的区块链
开发语言·后端·golang
ghostwritten3 小时前
Python FastAPI 实战应用指南
开发语言·python·fastapi