Qt MainWindow窗口部件简介

news/2024/7/7 20:57:30

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://lihuaxi.xjx100.cn/news/176016.html

相关文章

力扣刷题(代码回忆录)——动态规划

关于动态规划&#xff0c;你该了解这些&#xff01;动态规划&#xff1a;斐波那契数动态规划&#xff1a;爬楼梯动态规划&#xff1a;使用最小花费爬楼梯本周小结&#xff01;&#xff08;动态规划系列一&#xff09;动态规划&#xff1a;不同路径动态规划&#xff1a;不同路径…

linux进阶55——service文件

实现流程 创建.service文件 创建ping.service文件&#xff0c;内容可以如下&#xff1a; [Unit] Descriptionping daemon Afternetwork.target [Service] Restarton-failure ExecStart/usr/bin/ping 127.0.0.%d ExecReload/bin/kill -s -HUP $MAINPID ExecSt…

qmake language ~= 字符串替换操作 正则表达式

qmake language 的字符串替换操作的规则为&#xff1a; VAR ~ s[seprator]pattern[seprator]replace[seprator]?[gqi] 1、必须以s开头 2、seprator需要自己指定&#xff0c;可以是任意字符 3、pattern为正则表达式的内容&#xff0c;可以参看正则表达式规则&#xff1a;正则表…

商用短链平台_第4章_功能需求介绍和微服务拆分讲解

商用短链平台_第4章_功能需求介绍和微服务拆分讲解 文章目录商用短链平台_第4章_功能需求介绍和微服务拆分讲解第四章 商用短链平台-功能需求介绍和微服务拆分讲解第1集 学以致用-商用短链平台需求文档拆分和总结第2集 商用短链平台-微服务拆分和技术栈版本说明第3集 商用短链平…

[附源码]java毕业设计疫情防控期间网上教学管理

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

cubeIDE开发, stm32的OLED点亮及字符显示设计(基于SPI通信)

一、SPI 通信技术 显示屏&#xff08;LCD、OLED&#xff09;接口一般有I2C、SPI、UART、RGB、LVDS、MIPI、EDP和DP等。一般3.5寸以下的小尺寸LCD屏&#xff0c;显示数据量比较少&#xff0c;普遍采用低速串口&#xff0c;如I2C、SPI、UART。SPI&#xff08;Serial Peripheral I…

Linux——进程间通信(共享内存)

一、共享内存 1、定义 共享内存为多个进程之间共享和传递数据提供了一种有效的方式。共享内存是先在物理内存上申请一块空间&#xff0c;多个进程可以将其映射到自己的虚拟地址空间中。所有进程都可以访问共享内存中的地址&#xff0c;就好像它们是由malloc分配的一样。如果某…

vue3 框架学习概念笔记

文章目录前情提要框架设计概览命令式声明式小结虚拟dom性能运行时和编译时框架设计核心要素声明式描述UI渲染器组件的本质vue.js模板响应式系统概念完善的响应式系统响应式系统的调度计算属性Computedwatch 原理竞态问题非原始值的响应式方案javaScript 对象原始值的响应式方案…