QT:QT窗口(一)

文章目录

  • 菜单栏
    • 创建菜单栏
    • 在菜单栏中添加菜单
    • 创建菜单项
    • 添加分割线
  • 工具栏
    • 创建工具栏
    • 设置停靠位置
      • 创建工具栏的同时指定停靠位置
      • 使用QToolBar类提供的setAllowedAreas函数来设置停靠位置
    • 设置浮动属性
    • 设置移动属性
  • 状态栏
    • 状态栏的创建
    • 在状态栏中显示实时消息
    • 在状态栏中显示永久消息

菜单栏

创建菜单栏

#include "mainwindow.h"
#include "ui_mainwindow.h"MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);QMenuBar* menubar = new QMenuBar(this);this->setMenuBar(menubar);
}MainWindow::~MainWindow()
{delete ui;
}

在菜单栏中添加菜单

创建菜单:

#include "mainwindow.h"
#include "ui_mainwindow.h"MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);QMenuBar* menubar = new QMenuBar(this);this->setMenuBar(menubar);// 创建菜单QMenu* menu1 = new QMenu("菜单");QMenu* menu2 = new QMenu("编辑");QMenu* menu3 = new QMenu("构建");// 再把菜单设置进去menubar->addMenu(menu1);menubar->addMenu(menu2);menubar->addMenu(menu3);
}MainWindow::~MainWindow()
{delete ui;
}

在这里插入图片描述

创建菜单项

#include "mainwindow.h"
#include "ui_mainwindow.h"MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);QMenuBar* menubar = new QMenuBar(this);this->setMenuBar(menubar);// 创建菜单QMenu* menu1 = new QMenu("菜单");QMenu* menu2 = new QMenu("编辑");QMenu* menu3 = new QMenu("构建");// 再把菜单设置进去menubar->addMenu(menu1);menubar->addMenu(menu2);menubar->addMenu(menu3);// 创建菜单项QAction* act1 = new QAction("open");QAction* act2 = new QAction("close");QAction* act3 = new QAction("create");// 把菜单项设置进去menu1->addAction(act1);menu1->addAction(act2);menu1->addAction(act3);
}MainWindow::~MainWindow()
{delete ui;
}

在这里插入图片描述

添加分割线

可以使用addSeparator来添加分割线:

在这里插入图片描述

工具栏

创建工具栏

调用addToolBar函数来创建工具栏:

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QToolBar>MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);QToolBar* toolbar1 = new QToolBar(this);QToolBar* toolbar2 = new QToolBar(this);this->addToolBar(toolbar1);this->addToolBar(toolbar2);}MainWindow::~MainWindow()
{delete ui;}

设置停靠位置

工具栏停靠位置的设置有两种方式,一种是在创建的时候选择停靠位置,一种是使用setAllowedAreas函数来设置

创建工具栏的同时指定停靠位置

在创建工具栏的同时,就可以设置工具栏的停靠位置,对于这个来说默认的位置是在窗口的最上面,也可以自己来设置:

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QToolBar>MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);// 创建工具栏QToolBar* toolbar1 = new QToolBar(this);QToolBar* toolbar2 = new QToolBar(this);// 设置一下位置this->addToolBar(Qt::LeftToolBarArea, toolbar1);this->addToolBar(Qt::RightToolBarArea, toolbar2);}MainWindow::~MainWindow()
{delete ui;}

在这里插入图片描述

使用QToolBar类提供的setAllowedAreas函数来设置停靠位置

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QToolBar>MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);// 创建工具栏QToolBar* toolbar1 = new QToolBar(this);QToolBar* toolbar2 = new QToolBar(this);// 设置一下位置this->addToolBar(toolbar1);this->addToolBar(toolbar2);// 只允许在左侧停靠toolbar1->setAllowedAreas(Qt::LeftToolBarArea);// 只允许在右侧停靠toolbar2->setAllowedAreas(Qt::RightToolBarArea);}MainWindow::~MainWindow()
{delete ui;}

设置浮动属性

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QToolBar>MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);// 创建工具栏QToolBar* toolbar1 = new QToolBar(this);QToolBar* toolbar2 = new QToolBar(this);// 设置一下位置this->addToolBar(toolbar1);this->addToolBar(toolbar2);// 只允许在左侧停靠toolbar1->setAllowedAreas(Qt::LeftToolBarArea);// 只允许在右侧停靠toolbar2->setAllowedAreas(Qt::RightToolBarArea);// 允许和不允许工具栏浮动toolbar1->setFloatable(true);toolbar2->setFloatable(false);}MainWindow::~MainWindow()
{delete ui;}

设置移动属性

移动属性如果设置为false,表示的是停靠位置的操作就不会生效,可以理解为是一个总开关

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QToolBar>MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);// 创建工具栏QToolBar* toolbar1 = new QToolBar(this);QToolBar* toolbar2 = new QToolBar(this);// 设置一下位置this->addToolBar(toolbar1);this->addToolBar(toolbar2);// 只允许在左侧停靠toolbar1->setAllowedAreas(Qt::LeftToolBarArea);// 只允许在右侧停靠toolbar2->setAllowedAreas(Qt::RightToolBarArea);// 允许和不允许移动toolbar1->setMovable(true);toolbar2->setMovable(false);}MainWindow::~MainWindow()
{delete ui;}

状态栏

状态栏是输出简要消息的区域,一般用于主窗口的底部,一个窗口中最多只能有一个状态栏

可以显示有实时消息,永久消息,进度消息等

状态栏的创建

#include "mainwindow.h"
#include "ui_mainwindow.h"MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);// 创建状态栏QStatusBar* stbar = statusBar();// 把状态栏放到窗口中setStatusBar(stbar);
}MainWindow::~MainWindow()
{delete ui;
}

在状态栏中显示实时消息

可以使用showMessage来实现

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QStatusBar>MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);// 创建状态栏QStatusBar* stbar = statusBar();// 把状态栏放到窗口中setStatusBar(stbar);// 在状态栏中显示2s的消息stbar->showMessage("Hello_Qt", 2000);
}MainWindow::~MainWindow()
{delete ui;
}

在状态栏中显示永久消息

简单的设计方案是,把消息用标签来提示

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QStatusBar>
#include <QLabel>MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);// 创建状态栏QStatusBar* stbar = statusBar();// 把状态栏放到窗口中setStatusBar(stbar);// 创建标签QLabel* label = new QLabel("这是提示消息", this);stbar->addWidget(label);
}MainWindow::~MainWindow()
{delete ui;
}

在这里插入图片描述
也可以放到右侧

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/6643.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AI人才争夺战,华尔街入局:豪掷百万美元年薪抢人

继硅谷之后&#xff0c;华尔街也入局**“AI人才争夺大战”**。 他们的目标非常明确——抢的就是高精尖的AI专家。 △图源&#xff1a;Business Insider 现在这条“街”上&#xff0c;不论是银行、对冲基金还是私募股权公司都已纷纷下场&#xff0c;可谓是豪掷千金&#xff0c…

选择深度学习框架:TensorFlow 2 vs PyTorch

TensorFlow 2 vs PyTorch 选择深度学习框架&#xff1a;TensorFlow 2 vs PyTorchTensorFlow 2概述TensorFlow 2的优点TensorFlow 2的缺点 PyTorch概述PyTorch的优点PyTorch的缺点 选择建议对于选择困难症的人&#xff0c;我给你们的答案——PyTorch选择理由&#xff1a;结论&am…

【LinuxC语言】setitimer与getitimer函数

文章目录 前言一、setitimer() 函数二、getitimer() 函数三、示例代码总结 前言 在Linux系统下&#xff0c;编写程序时经常需要使用定时器来实现一些定时任务、超时处理等功能。setitimer() 和 getitimer() 函数是两个用于操作定时器的重要函数。它们可以帮助我们设置定时器的…

[华为OD]C卷 给定一个数组,数组中的每个元素代表该位置的海拔高度 山脉的个数 200

题目&#xff1a; 给定一个数组&#xff0c;数组中的每个元素代表该位置的海拔高度。0表示平地&#xff0c;&#xff1e;1时表示属于某个 山峰&#xff0c;山峰的定义为当某个位置的左右海拔均小于自己的海拔时&#xff0c;该位置为山峰。数组起始位 置计算时可只满足一边…

SpringBoot自定义定时任务

通常&#xff0c;在我们的项目中需要定时给前台发送一些提示性消息或者我们想要的定时信息&#xff0c;这个时候就需要使用定时任务来实现这一功能&#xff0c;实现也很简单&#xff0c;接下来具体来看看吧~ 简单定时任务 首先&#xff0c;你需要在你的启动类上加上开启定时任…

YOLOv5改进之bifpn

目录 一、原理 二、代码 三、在YOLOv5中的应用 一、原理 论文链接:

[Linux][网络][TCP][一][TCP基础][TCP报头]详细讲解

目录 1.TCP头部格式2.TCP协议的特点3.TCP如何封装与分用4.通过序列号和确认应答号提高可靠性1.32位序列号2.32位确认应答号3.保证可靠性4.为什么序列号和确认应答号是单独的字段 5.窗口大小1.TCP的发送和接收缓冲区2.窗口大小 6.连接管理机制 1.TCP头部格式 TCP全称为"传输…

Ubuntu20安装torch1.13和pytorch_geometric2.3.0(对应cuda11.6)

在torch下载页面搜索1.13https://pytorch.org/get-started/previous-versions/&#xff0c;wheel安装方式&#xff08;激活conda虚拟环境&#xff09; pip install torch1.13.0cu116 torchvision0.14.0cu116 torchaudio0.13.0 --extra-index-url https://download.pytorch.org…

【Trick】conda安装python依赖时出现429 Client Error

起因 我在根据yml文件安装依赖和创建虚拟环境时&#xff0c;出现报错&#xff0c;主要报错信息为以下两点&#xff1a; 【1】Collecting package metadata (repodata.json): failed 【2】requests.exceptions.HTTPError: 429 Client Error: Too Many Requests for url: https…

C++笔记打卡第25天(机房预约系统)

1.机房预约系统需求 1.1 系统简介 学校有几个规格不同的机房&#xff0c;使用时经常会出现重复现象&#xff0c;现开发一套机房预约系统&#xff0c;解决这一问题。 1.2 身份简介 分别有三种身份使用该程序&#xff1a; 学生代表&#xff1a;申请试用机房教师&#xff1a;…

深入理解网络原理3----TCP核心特性介绍(上)【面试高频考点】

文章目录 前言TCP协议段格式一、确认应答【保证可靠性传输的机制】二、超时重传【保证可靠性传输的机制】三、连接管理机制【保证可靠性传输的机制】3.1建立连接&#xff08;TCP三次握手&#xff09;---经典面试题3.2断开连接&#xff08;四次挥手&#xff09;3.3TCP状态转换 四…

车载电子电器架构 —— 如何理解和使用Update bit

车载电子电器架构 —— 如何理解和使用Update bit 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,多看一眼都是你的不对。非必要不…

RabbitMQ(Docker 单机部署)

序言 本文给大家介绍如何使用 Docker 单机部署 RabbitMQ 并与 SpringBoot 整合使用。 一、部署流程 拉取镜像 docker pull rabbitmq:3-management镜像拉取成功之后使用下面命令启动 rabbitmq 容器 docker run \# 指定用户名-e RABBITMQ_DEFAULT_USERusername \# 指定密码-e R…

C++学习--点滴记录011

11函数提高 11.1 函数默认参数 在C中&#xff0c;函数的形参列表中的形参可以有默认值 语法&#xff1a; 返回值类型 函数名 &#xff08;参数 默认值&#xff09;{} 示例&#xff1a; #include <iostream> using namespace std;int func(int a, int b 10, int c …

IoTDB 入门教程 基础篇③——基于Linux系统快速安装启动和上手

文章目录 一、前文二、下载三、解压四、上传五、启动六、执行七、停止八、参考 一、前文 IoTDB入门教程——导读 二、下载 下载二进制可运行程序&#xff1a;https://dlcdn.apache.org/iotdb/1.3.1/apache-iotdb-1.3.1-all-bin.zip 历史版本下载&#xff1a;https://archive.…

springboot 集成 flowable

随着企业对于业务流程管理需求的增加&#xff0c;流程引擎在企业信息化建设中的作用越来越重要。Flowable是一个开源的轻量级业务流程管理&#xff08;BPM&#xff09;和工作流引擎&#xff0c;它支持BPMN 2.0标准。 Flowable的一些特点&#xff1a; 安装集成&#xff1a;Flow…

每日一题(AL001):A+B Format--字符串处理

找输出的顺序很重要&#xff1a; #include<bits/stdc.h> using namespace std; int main(){int a,b;cin>>a>>b;int sumab;if(sum0) cout<<0;bool ftrue;vector<char> v;if(sum<0) {ffalse; sum-sum;}while(sum>0){char cstatic_cast<c…

Redis之Stream流

reidis为了抢占市场份额&#xff0c;推出了自己的消息队列&#xff0c;Stream流&#xff0c; 常用操作如下&#xff1a; xadd name id值 key value key1 value1...&#xff1a;若不存在为name的stream流&#xff0c;则创建一个新的名为name的stream流。这里id相当于数据库中的…

将要上市的自动驾驶新书《自动驾驶系统开发》中摘录各章片段 1

以下摘录一些章节片段&#xff1a; 1. 概论 自动驾驶系统的认知中有一些模糊的地方&#xff0c;比如自动驾驶系统如何定义的问题&#xff0c;自动驾驶的研发为什么会有那么多的子模块&#xff0c;怎么才算自动驾驶落地等等。本章想先给读者一个概括介绍&#xff0c;了解自动驾…

R语言中,查看经安装的包,查看已经加载的包,查看特定包是否已经安装,安装包,更新包,卸载包

创建于&#xff1a;2024.5.4 R语言中&#xff0c;查看经安装的包&#xff0c;查看已经加载的包&#xff0c;查看特定包是否已经安装&#xff0c;安装包&#xff0c;更新包&#xff0c;卸载包 文章目录 1. 查看经安装的包2. 查看已经加载的包3. 查看特定包是否已经安装4. 安装包…