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

【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

输入对话框,通过弹出对话框让用户输入整数、浮点数或者条目:
在这里插入图片描述
在这里插入图片描述

也可以输入其他内容:

在这里插入图片描述


http://www.kler.cn/a/514725.html

相关文章:

  • linux下springboot项目nohup日志或tomcat日志切割处理方案
  • 开篇:吴恩达《机器学习》课程及免费旁听方法
  • 【C++】size_t全面解析与深入拓展
  • 第23篇 基于ARM A9处理器用汇编语言实现中断<五>
  • (undone) 并行计算学习 (Day2: 什么是 “伪共享” ?)
  • 麒麟操作系统服务架构保姆级教程(十三)tomcat环境安装以及LNMT架构
  • windows下本地部署安装hadoop+scala+spark-【不需要虚拟机】
  • 中国认知作战研究中心:从认知战角度分析2007年iPhone发布
  • HTTPS的加密原理
  • 基于RK3576/RK3588+FPGA+AI深度学习的轨道异物检测技术研究
  • spring ApplicationContext的事件监听机制
  • 「全网最细 + 实战源码案例」设计模式——简单工厂模式
  • 循环队列(C语言版)
  • AGI发展的现实约束与定义困境
  • 学习记录-统计记录场景下的Redis写请求合并优化实践
  • [矩阵扩散]
  • VUE elTree 无子级 隐藏展开图标
  • Java高频面试之SE-16
  • C++----STL(vector)
  • curl简介与libcurl开源库的使用总结
  • 在电商行业中,3D模型的应用有哪些?
  • ECCV 2024,全新激活函数!
  • 【面试题】MQ部分[2025/1/13 ~ 2025/1/19]
  • 【Uniapp-Vue3】StorageSync数据缓存API
  • OGG 19C 集成模式启用DDL复制
  • ORA-15041 ORA-15023