Qt MainWindow窗口部件简介

news2024/9/25 19:24:31

Qt MainWindow窗口部件简介

1、菜单栏

特性如下:

  • 有且仅有一个
  • **位置:**顶部
// 创建菜单 最多只能有一个
QMenuBar * bar = menuBar();
// 将菜单栏放入到窗口处
setMenuBar(bar);

// 创建顶部菜单
QMenu * fileMenu = bar->addMenu("文件");
QMenu * editMenu = bar->addMenu("编辑");

// 创建菜单项
newAction =  fileMenu->addAction("新建");
// 创建多级菜单
fileMenu->addMenu("打开");
// 添加单级菜单
editMenu->addAction("文字");
editMenu->addAction("图片");
//添加分割线
fileMenu->addSeparator();
fileMenu->addAction("保存");

2、工具栏

工具栏特性:

  • 可以有多个
  • 可浮动
  • 可以在任意位置
// 设置工具栏
QToolBar * toolBar = new QToolBar(this);
addToolBar(Qt::LeftToolBarArea, toolBar);
// 设置作用的区域
toolBar->setAllowedAreas(Qt::LeftToolBarArea|Qt::RightToolBarArea);
// 设置不可浮动
toolBar->setFloatable(false);
// 总开关 设置不可移动
toolBar->setMovable(false);

toolBar->addAction(newAction); //QAction * newAction =  fileMenu->addAction("新建");可以把菜单里面的action方法集成到工具栏中
toolBar->addAction("啊哈");

QPushButton * btn = new QPushButton("来啦", this);
toolBar->addWidget(btn);// 也可以集成按钮。

3、状态栏

状态栏就是程序最下面的那一栏,显示当前程序状态

  • 有且仅有一个
  • **位置:**最下面
  • 可以在底部的左边也可以在底部的右边
// 放标签控件
QLabel * label = new QLabel("提示信息", this);
stBar->addWidget(label);

// 底部右侧状态栏
QLabel *rightLabel = new QLabel("右侧信息", this);
stBar->addPermanentWidget(rightLabel);

4、铆接部件(浮动窗口)

铆接部件可以认为是辅助部件

  • 可以是多个
  • 可以再任意位置
// 铆接部件  浮动窗口 
QDockWidget * dockWidget = new QDockWidget("浮动标签", this);
// 初始化铆接部件,需要传入位置和QDockWidget对象
addDockWidget(Qt::BottomDockWidgetArea, dockWidget);
// 设置铆接部件只能上下附着
dockWidget->setAllowedAreas(Qt::TopDockWidgetArea|Qt::BottomDockWidgetArea);

5、中心部件(内容部件)

中心部件是主要内容展示中心。有且仅有一个

  • 有且仅有一个
  • 内容展示的主要空间
// 设置中心部件  在这里我们来显示文本控件
QTextEdit * textEdit = new QTextEdit("毛毛来了", this);
setCentralWidget(textEdit);

6、实例

**要求:**点击工具栏的按钮实现更改中心控件的内容

6.1 mainwindow.cpp代码

在mainwindow.cpp中代码如下使用lambda函数和connet函数实现信号和槽

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QMenuBar>
#include <QToolBar>
#include <QPushButton>
#include <QStatusBar>
#include <QLabel>
#include <QDockWidget>
#include <QTextEdit>

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    // 重置窗口大小
    resize(600,400);

    // 创建菜单 最多只能有一个
    QMenuBar * bar = menuBar();
    // 将菜单栏放入到窗口处
    setMenuBar(bar);

    // 创建菜单
    QMenu * fileMenu = bar->addMenu("文件");
    QMenu * editMenu = bar->addMenu("编辑");

    // 创建菜单项
    QAction * newAction =  fileMenu->addAction("新建");
    fileMenu->addMenu("打开");
    editMenu->addAction("文字");
    editMenu->addAction("图片");
    //添加分割线
    fileMenu->addSeparator();
    fileMenu->addMenu("保存");

    // 设置工具栏
    QToolBar * toolBar = new QToolBar(this);
    addToolBar(Qt::LeftToolBarArea, toolBar);// 将工具栏移至左侧
    // 设置作用的区域
    toolBar->setAllowedAreas(Qt::LeftToolBarArea|Qt::RightToolBarArea);
    // 设置不可浮动
    toolBar->setFloatable(false);
    // 总开关 设置不可移动
    toolBar->setMovable(false);

    toolBar->addAction(newAction);
    toolBar->addAction("啊哈");

    QPushButton * btn = new QPushButton("来啦", this);
    toolBar->addWidget(btn);

    // 设置状态栏 只能有一个
    QStatusBar * stBar = new QStatusBar;
    setStatusBar(stBar);
    // 放标签控件
    QLabel * label = new QLabel("状态栏提示信息", this);
    stBar->addWidget(label);

    QLabel *rightLabel = new QLabel("右侧信息", this);
    stBar->addPermanentWidget(rightLabel);

    // 铆接部件  浮动窗口  可以使多个
    QDockWidget * dockWidget = new QDockWidget("浮动标签", this);
    addDockWidget(Qt::BottomDockWidgetArea, dockWidget);
    dockWidget->addAction(newAction);
    // 设置铆接部件只能上下附着
    dockWidget->setAllowedAreas(Qt::TopDockWidgetArea|Qt::BottomDockWidgetArea);


    // 设置中心部件  只能有一个
    QTextEdit * textEdit = new QTextEdit("毛毛来了", this);
    setCentralWidget(textEdit);

    connect(btn, &QPushButton::clicked,this,[=](){
        printText(*textEdit);
    });
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::printText(QTextEdit& text)
{
    text.setText("你要干啥???");
}

6.2 效果

请添加图片描述

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

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

相关文章

用DIV+CSS技术制作一个简单的网页 我的家乡主题

家乡旅游景点网页作业制作 网页代码运用了DIV盒子的使用方法&#xff0c;如盒子的嵌套、浮动、margin、border、background等属性的使用&#xff0c;外部大盒子设定居中&#xff0c;内部左中右布局&#xff0c;下方横向浮动排列&#xff0c;大学学习的前端知识点和布局方式都有…

redis三(3-2)

传统缓存的问题 传统的缓存策略一般是请求到达Tomcat后&#xff0c;先查询Redis&#xff0c;如果未命中则查询数据库&#xff0c;存在下面的问题&#xff1a; 请求要经过Tomcat处理&#xff0c;Tomcat的性能成为整个系统的瓶颈Redis缓存失效时&#xff0c;会对数据库产生冲击…

【Java八股文总结】之读写分离分库分表

文章目录读写分离&分库分表一、读写分离1、何为读写分离2、读写分离会带来什么问题&#xff1f;如何解决&#xff1f;3、如何实现读写分离&#xff1f;4、主从复制原理二、分库分表1、为什么要进行分库分表&#xff1f;2、何为分库&#xff1f;3、何为分表&#xff1f;★4、…

Github+Markdown(1)

报错配置 如果报错如下&#xff1a;Failed to connect to github.com port 443: Timed out 解决方案&#xff1a; 在C:\Users\m00585487\.gitconfig文件中&#xff0c;添加如下内容 [http "https://github.com"] proxy http://m00585487:J!f42022proxyhk.huawei…

基础SSM框架搭建

SSM框架一、注入依赖二、配置web.xml三、springmvc-common.xml配置四、mybatis-config.xml配置五、log4j.properties日志文件配置六、jdbc.properties连接信息七、applicationContext.xml配置八、UserDao.xml案例九、UserService接口十、UserServiceImpl实现十一、MyConverter十…

【表白程序】盛开的玫瑰代码

我挥舞着键盘和本子&#xff0c;发誓要把世界写个明明白白。 今天带来的是盛开的玫瑰&#xff0c;希望大家喜欢&#xff01; 简介 HTML5 SVG线条玫瑰花动画特效是一款基于svg绘制卡通玫瑰花动画&#xff0c;先用线条勾画出花的现状&#xff0c;在生成颜色过程特效。 利用所学…

如何提取图片中文字?安利这几个图片转文字提取的方法

在我们工作学习中&#xff0c;有没有遇到过需要将图片中的文字信息给记录下来的情况&#xff0c;一般这种时候你是怎么做的呢&#xff1f;是根据图片手动输入吗&#xff1f;如果是在文字少量的情况下&#xff0c;可以这样操作&#xff0c;可是如果文字较多的话&#xff0c;手动…

iOS 16.1新功能尝鲜:如何在iPhone上启用实时活动?

近日&#xff0c;苹果发布了iOS 16.1正式版&#xff0c;在本次更新中&#xff0c;苹果推出了全新“实时活动”功能&#xff0c;用户能在iPhone锁定屏幕上查看到更多信息&#xff0c;如果是iPhone 14 Pro机型&#xff0c;实时活动信息还将在灵动岛同步显示。 那么&#xff0c;i…

用HTML+CSS+JS做一个漂亮简单的游戏网页——全屏游戏美术大赛作品(4个滚动页面)

&#x1f389;精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业…

[论文阅读] Adversarial Learning for Semi-Supervised Semantic Segmentation

[论文地址] [代码] [BMVC 18] Abstract 我们提出了一种使用对抗性网络进行半监督性语义分割的方法。虽然大多数现有的判别器都是在图像层面上对输入图像进行真假分类的训练&#xff0c;但我们以完全卷积的方式设计了一个判别器&#xff0c;以区分预测的概率图和考虑到空间分辨…

盘点一下分布式模式下的服务治理和监控优化方案

什么是服务治理&#xff1f; 相信每一个软件公司&#xff08;企业&#xff09;都希望可以确保开发及项目运行流程可以顺利&#xff0c;但是如果要完美完结那么需要其中会有很多的因素存在。包括&#xff0c;最佳实践、架构原则、服务治理以及其他决定性的因素。而其中服务治理…

网络入侵检测 Network Intrusion Detection System (NIDS)

网络入侵检测 Network Intrusion Detection System--NIDS网络入侵检测 Network Intrusion Detection System (NIDS)1.学习内容2.数据集说明3.NIDS组件4.基于SDN的网络入侵检测5.实验步骤下载数据集下载代码配置环境结构目录运行程序训练结果6.总结参考论文数据集申明&#xff1…

JVM垃圾回收——CMS垃圾收集器

目录 一、什么是CMS垃圾收集器 二、CMS垃圾收集的过程 三、CMS收集器的不足 四、CMS收集器的参数配置 一、什么是CMS垃圾收集器 虽然HotSpot虚拟机已经在jdk14中移除了CMS垃圾收集的参数&#xff0c;但是考虑到还有很多开发是基于jdk8开发的&#xff0c;所以还是有必要了解…

leetcode17. 电话号码的字母组合

文章目录题目思考代码和注释总结题目 给定一个仅包含数字 2-9 的字符串&#xff0c;返回所有它能表示的字母组合。答案可以按 任意顺序 返回。 给出数字到字母的映射如下&#xff08;与电话按键相同&#xff09;。注意 1 不对应任何字母。 来源&#xff1a;力扣&#xff08;…

【计算机毕业设计】5.网上书店系统maven源码

一、系统截图&#xff08;需要演示视频可以私聊&#xff09; 摘要 随着Internet的发展&#xff0c;人们的日常生活已经离不开网络。未来人们的生活与工作将变得越来越数字化、网络化和电子化。网上销售&#xff0c;它将是直接市场营销的最新形式。本论文是以构建网上书店系统为…

善网ESG周报(第一期)

ESG报告&#xff1a; 诺基亚最新ESG报告已出炉 报告显示&#xff0c;诺基亚的ESG战略着重于环境、工业数字化、安全和隐私、缩小数字鸿沟、以及企业责任。 Lazada 发布首份ESG报告&#xff1a;为东南亚六国创造约110万经济机会 报告提出&#xff0c;Lazada在区域赋能方面、…

BGP进阶:BGP 综合实验二

实验拓扑及说明 设备编号及互联线路如图所示&#xff1b;所有设备的互联地址段采用10.1.xy.0/24&#xff0c;其中xy为设备编号&#xff0c;x为编号较小的设备&#xff0c;y为编号较大的设备。例如R2及R3之间的直连链路&#xff0c;网段为10.1.23.0/24&#xff0c;这条链路上R2的…

2023年系统规划与设计管理师-第一章信息的综合知识

1. 思维导图 2.信息补充 2.1 信息的传输模型 2.2 信息质量的七大属性 2.3 信息化的基本内涵 2.4 电子商务类型 2.5 电子商务类型 2.6 电子商务的特征 2.7 电子商务的基础设施 2.8 加快商务发展的基本原则 2.9 企业信息化 2.10 信息系统的组成部分 2.11 信息系统的生命周期 2.12…

世界杯 | 中国首次承建世界杯主赛场,基建狂魔用BIM征服世界杯

hi&#xff0c;家人们&#xff0c;我是建模助手。 呐&#xff0c;一如既往地&#xff0c;这次世界杯中国除了球队&#xff0c;其他基本都去了卡塔尔&#xff0c;我可不是在搞幽默&#xff0c;本次世界杯可真是中国元素满满—— 包括但不限于Made in China的纯电大巴、无人驾驶地…

技术分享 | 无人驾驶汽车的眼睛

根据智能化程度的不同&#xff0c;自动驾驶被分为5个等级&#xff1a;L1辅助驾驶、L2部分自动驾驶、L3有条件自动驾驶、L4高度自动驾驶、L5完全自动驾驶&#xff0c;即真正的无人驾驶。 日渐活跃于公众视野的“无人驾驶”概念&#xff0c;往往是指L3及以上级别的自动驾驶。目前…