Qt桌面应用开发 第三天(QMainWindow)

news/2024/11/8 5:55:04/

目录

1.QMainWindow

1.1菜单栏

1.2工具栏

1.3状态栏

1.4铆接部件和核心部件

1.4.1铆接部件

1.4.2核心部件


1.QMainWindow

1.1菜单栏

为用户提供主窗口程序的类。一个主窗口最多只有一个菜单栏,位于主窗口顶部,标题栏下面。

创建步骤:

  1. 创建菜单栏(QMenuBar)
  2. 将菜单栏设置到窗口中
  3. 菜单栏中添加菜单(QMenu)
  4. 菜单中添加菜单项(QAction)
  5. 菜单项(QAction)中可以加菜单(QMenu)
MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);//创建菜单栏,只能有一个QMenuBar* bar=menuBar();//将菜单栏设置到窗口中this->setMenuBar(bar);//添加菜单QMenu* file=bar->addMenu("文件");QMenu* edit=bar->addMenu("编辑");//添加菜单项QAction* newBuild=file->addAction("新建");file->addSeparator();QAction* open=file->addAction("打开");QMenu* subMenu=new QMenu;subMenu->addAction("子菜单1");subMenu->addAction("子菜单2");newBuild->setMenu(subMenu);
}

1.2工具栏

主窗口的工具栏可以有多个。

创建步骤:

  1. 创建工具栏(QToolBar)
  2. 将工具栏添加到窗口中
  3. 设置允许停靠的区域
  4. 设置是否可以浮动/移动
  5. 添加工具按钮(addAction)

    //创建工具栏(QToolBar)QToolBar* toolBar=new QToolBar;//将工具栏添加到窗口中this->addToolBar(Qt::LeftToolBarArea,toolBar);//设置允许停靠的区域toolBar->setAllowedAreas(Qt::LeftToolBarArea|Qt::RightToolBarArea);//设置是否可以浮动toolBar->setFloatable(false);toolBar->setMovable(false);//添加工具按钮toolBar->addAction(newBuild);toolBar->addSeparator();toolBar->addAction("工具栏");

1.3状态栏

主窗口的状态栏最多只能有一个

状态栏中添加文本:

创建步骤:

  1. 创建状态栏
  2. 将状态栏设置到窗口中
  3. 创建文本标签控件
  4. 将文本标签控件添加到状态栏中
    //创建状态栏QStatusBar* Bar=statusBar();//将状态栏设置到窗口中this->setStatusBar(Bar);//创建文本标签控件QLabel* lable1=new QLabel("左侧信息1",this);QLabel* lable2=new QLabel("右侧信息1",this);QLabel* lable3=new QLabel("左侧信息2",this);//自左向右设置Bar->addWidget(lable1);//自右向左设置Bar->addPermanentWidget(lable2);//插入设置Bar->insertWidget(0,lable3);

1.4铆接部件和核心部件

1.4.1铆接部件

主窗口的铆接部件也是浮动窗口,可以有多个。

铆接部件可以设置停靠区域:

注意:铆接部件的停靠依赖于核心部件

创建步骤:

  1. 创建铆接部件
  2. 将铆接部件添加到窗口中
  3. 设置停靠
1.4.2核心部件

除了菜单栏,工具栏,状态栏,铆接部件,中心显示的都可以作为核心部件,核心部件只有一个,但是可以由多个小控件组成。

    //创建铆接部件QDockWidget* dock=new QDockWidget("浮动窗口",this);//将铆接部件添加到窗口中addDockWidget(Qt::BottomDockWidgetArea,dock);//设置停靠dock->setAllowedAreas(Qt::LeftDockWidgetArea|Qt::RightDockWidgetArea);QTextEdit* edit=new QTextEdit(this);setCentralWidget(edit);


http://www.ppmy.cn/news/1545274.html

相关文章

【车辆车型识别】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+算法模型

一、介绍 车辆车型识别,使用Python作为主要编程语言,通过收集多种车辆车型图像数据集,然后基于TensorFlow搭建卷积网络算法模型,并对数据集进行训练,最后得到一个识别精度较高的模型文件。再基于Django搭建web网页端操…

前后端跨域联调

很多伙伴在学习前端或后端到一定时段时,就会思考前端后端两个东西之间的请求和数据到底是怎么联系起来的! 今天就来了解一下这个东西吧! 1.前端发送的请求,如何请求到后端服务的? 对于前端发出来的请求,跟…

GS-SLAM论文阅读--High-Fidelity SLAM Using Gaussian Splatting

前言 这篇文章是几个月之前的IROS2024了,之前忘记看了,但是最近看到,觉得有一些值得参考的部分,接下来仔细阅读一下。 文章目录 前言1.背景介绍2.关键内容2.1 建图2.2 跟踪2.3总体流程 3.文章贡献 1.背景介绍 3DGS的连续建图存在…

uni-app 封装刘海状态栏(适用小程序, h5, 头条小程序)

一. 创建一个hooks hooks—>useSystemBar.js 二. useSystemBar.js 其中// #ifdef MP-WEIXIN 不是注释 这是uni-app的写法 import {ref} from vue;export default function() {// 获取系统信息let systemInfo ;// #ifdef MP-WEIXINsystemInfo uni.getWindowInfo…

8+ 典型分析场景,25+ 标杆案例,Apache Doris 和 SelectDB 精选案例集(2024版)电子版上线

当前,各企业正面临前所未有的数据增量,不仅体现在数据规模的急剧上升,还体现在数据的类型多样性和产生速度的加快。数据体量大固然蕴藏着更大的潜力及可能性,但如何有效利用这些数据,解决实际问题、赋能业务增长&#…

leetcode138:随机链表的复制

给你一个长度为 n 的链表,每个节点包含一个额外增加的随机指针 random ,该指针可以指向链表中的任何节点或空节点。 构造这个链表的 深拷贝。 深拷贝应该正好由 n 个 全新 节点组成,其中每个新节点的值都设为其对应的原节点的值。新节点的 n…

二叉树 最大深度(递归)

给定一个二叉树 root ,返回其最大深度。 二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。 示例 1: 输入:root [3,9,20,null,null,15,7] 输出:3示例 2: 输入:root [1,null,2] 输出…

AJ-Report:一款开源且非常强大的数据可视化大屏和报表工具

嗨,大家好,我是小华同学,关注我们获得“最新、最全、最优质”开源项目和工作学习方法 AJ-Report是一个基于Java的开源报表工具,它集成了ECharts、Ant Design Vue等前端技术,致力于为企业提供一站式的数据可视化解决方案…