Qt [1] 是一个1991年由Qt Company开发的跨平台C++图形用户界面应用程序开发框架。它既可以开发GUI程序,也可用于开发非GUI程序,比如控制台工具和服务器。下面介绍QT的基础配置

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、实战一哈

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

在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("你要干啥???");
}

效果如下:

问:有的是一个有的控件可以有多个,咋判断???

答:set就是一个,add就是多个!啊哈!张全蛋!

QT的基础设置(菜单栏、状态栏、任务栏。。。。)的更多相关文章

  1. Qt编程基础入门之二

    QMainWindow 菜单栏 菜单栏 最多有一个 //菜单栏创建,一个 QMenuBar *menu = new QMenuBar(this); // this->setMenuBar(men ...

  2. Qt 线程基础(Thread Basics的翻译,线程的五种使用情况)

    Qt 线程基础(QThread.QtConcurrent等) 转载自:http://blog.csdn.net/dbzhang800/article/details/6554104 昨晚看Qt的Man ...

  3. Qt零基础教程(四) QWidget详解篇

    在博客园里面转载我自己写的关于Qt的基础教程,没次写一篇我会在这里更新一下目录: Qt零基础教程(四) QWidget详解(1):创建一个窗口 Qt零基础教程(四) QWidget详解(2):QWid ...

  4. Qt零基础教程(四)QWidget详解(3):QWidget的几何结构

    Qt零基础教程(四)  QWidget详解(3):QWidget的几何结构 这篇文章里面分析了QWidget中常用的几种几何结构 下图是Qt提供的分析QWidget几何结构的一幅图,在帮助的 Wind ...

  5. Qt 线程基础(QThread、QtConcurrent等)

    [-] 使用线程 何时使用其他技术替代线程 应该使用 Qt 线程的哪种技术 Qt线程基础 QObject与线程 使用互斥量保护数据的完整 使用事件循环防止数据破坏 处理异步执行 昨晚看Qt的Manua ...

  6. Qt 线程基础

    (转自:http://my.oschina.net/laopiao/blog/88158) 何谓线程? 线程与并行处理任务息息相关,就像进程一样.那么,线程与进程有什么区别呢?当你在电子表格上进行数据 ...

  7. IntelliJ IDEA 基础设置

    原文地址:IntelliJ IDEA 基础设置 博客地址:http://www.extlight.com 一.前言 IDEA 全称 IntelliJ IDEA,是java语言开发的集成环境,Intel ...

  8. Qt 线程基础(QThread、QtConcurrent等) 2

    使用线程 基本上有种使用线程的场合: 通过利用处理器的多个核使处理速度更快. 为保持GUI线程或其他高实时性线程的响应,将耗时的操作或阻塞的调用移到其他线程. 何时使用其他技术替代线程 开发人员使用线 ...

  9. Qt 线程基础(QThread、QtConcurrent、QThreadPool等)

      使用线程 基本上有种使用线程的场合: 通过利用处理器的多个核使处理速度更快. 为保持GUI线程或其他高实时性线程的响应,将耗时的操作或阻塞的调用移到其他线程. 何时使用其他技术替代线程 开发人员使 ...

  10. QSS基础-设置控件样式

    1.QSS基础-设置同类控件样式'''QSS基础:Qt Style SheetQt样式表用于设置控件的样式和风格(比如控件的背景色,字体颜色,字体大小等)和CSS的功能比较相似,功能相似''' fro ...

随机推荐

  1. Codeforces Global Round 26 A~C2

    惹啊啊啊啊,这场做得我发昏,最近总感觉不在状态,但还是再在冲击1600-1800的题目. A. Strange Splitting ---------------------------------题 ...

  2. Unity中自定义应用程序打开Assets目录下指定类型的文件

    在Unity使用VS2017打开unityShader文件时总提示错误: 我也一直没找啥原因,shader文件直接使用VSCode打开,当然其他类型的文件也可这样处理用相应的exe打开,如:pdf,t ...

  3. test20230824总结

    A 怎么是重构树板子,放在图上都是水题. B 考场上只打了一个暴力,赛后发现似乎是很可做的 C 是一个考察状态设计的 dp 以后要多刷 D 是一道数据结构优化 dp 考场上写出来了却因为空间问题挂了 ...

  4. vulnhub - w1r3s.v1.0.1

    vulnhub - w1r3s.v1.0.1 高质量视频教程 - b站红队笔记 靶机下载 本地环境 本机ip:192.168.157.131 w1r3s虚拟机设置NAT模式 信息收集 扫描网段得到攻击 ...

  5. 从 Helm 到 Operator:Kubernetes应用管理的进化

    Helm 的作用 在开始前需要先对 kubernetes Operator 有个简单的认识. 以为我们在编写部署一些简单 Deployment 的时候只需要自己编写一个 yaml 文件然后 kubec ...

  6. VUE商城项目 -登录功能 - 手稿

    用户列表功能开发

  7. 《从零开始学习Python爬虫:顶点小说全网爬取实战》

    顶点小说 装xpath helper GitHub - mic1on/xpath-helper-plus: 这是一个xpath开发者的工具,可以帮助开发者快速的定位网页元素. Question:加载完 ...

  8. c++ primer 第五版随笔

    1.what is std::endl ? for example, std::cout << "hello world" << std::endl; st ...

  9. 新一代Java高性能构建工具Maven-mvnd【实践可行版】

    Maven-mvnd介绍 Maven 的优点是稳定可靠,在绝大多数的项目上工作良好,社区生态很完善,几乎所有的 Java 开发者都在用.Maven 的缺点是,对于大一点的项目来说,构建太慢了.有时候只 ...

  10. Service Mesh Summit 回顾 | 轻舟服务网格的无侵入增强 Istio 经验

    在云原生社区近日主办的 Service Mesh Summit 2022 服务网格峰会上,网易数帆云原生技术专家方志恒分享了轻舟服务网格无侵入增强 Istio 的经验,本文据此次分享整理,介绍了对无侵 ...