【QT开发笔记-基础篇】| 第五章 绘图QPainter | 5.2 界面布局
本节对应的视频讲解:B_站_视_频
https://www.bilibili.com/video/BV1fR4y1k7Kt
上节课,初步展示了本章要实现的效果。本节课开始,就从零新建工程,把效果一一实现
首先先把界面搭建起来,也就是把用到的 Label、ComboBox、CheckBox、GroupBox 这些空间,拖拽到界面上,并完成布局:
1. 新建工程
在 Qt Creator 中新建工程,命名为 PainterX,如下:
2. 新建控件
可以直接在当前 Widget 上直接绘制各种图形
但是由于在当前的 Widget 主窗口中,已经放置了很多控件,如果直接在当前窗口中绘制,会很乱,界面也不方便布局
因此,最好的方法是,新建一个控件 PaintWidget 来继承 QWidget,然后在 PaintWidget 中来完成绘制
首先,在项目名称PainterX上右键,选择 “添加新文件…”
接着,自定义的类名为 PaintWidget:
最后,就会在项目中添加 paintwidget.h 和 paintwidget.cpp 两个文件,如下:
3. 控件提升
接下来,就可以放置 Widget 控件,并提升为 PaintWidget
3.1 拖放
创建了自定义的控件 PaintWidget 之后,就可以放置该控件了。
在工具箱中拖放一个 widget 控件,如下:
3.2 提升
首先,在 widget 控件上右键,选择 “提升为…”:
然后,打开如下对话框:
点击 “添加”之后,效果如下:
最后,点击“提升”,完成提升。此时,在设计师界面可以看到提升后的效果,如下:
4. 完成布局
接下来,再拖放其他控件,比如 Label、ComboBox、CheckBox、GroupBox 等
所有控件,拖放完毕,就可以进行布局了,最后的效果如下:
布局的层次结构,可以在右侧的 “对象查看器” 中看到,一目了然。
布局说明如下:
4.1 样式表
选中最外层的 widget,然后设置样式表如下:
QWidget
{ font: 14pt "Microsoft YaHei";color: #000000;
}QGroupBox {border-width: 1px;border-style: solid;margin-top:10px
}QGroupBox::title {subcontrol-origin: margin;left:20px;padding: -10px 5px 0px 5px;
}
4.2 顶部的形状
将 Label 和 ComboBox,放在一个 Widget 中,然后对 Widget 采用水平布局
将 Label 的 “水平策略” 修改为 Fixed
将 Widget 的 “垂直策略” 修改为 Fixed
将 Widget 的上下左右边距修改为 0
4.3 底部的设置
标签
将几个标签的 “水平策略” 修改为 Fixed,并将最大和最小值设置为 60
修改标签的文本的水平对齐方式为 “右对齐”
GroupBox
将三个 GroupBox “垂直策略”,修改为固定,最小高度设置为150
将三个 GroupBox 的 layoutTopMargin 修改为 20
画笔
除 Label 之外的控件的 “水平策略” 修改为 Fixed,并将最小宽度设置为 150
画刷
除 Label 之外的控件的 “水平策略” 修改为 Fixed,并将最小宽度设置为 240
最外层的 widget
将 “垂直策略”,修改为固定
将 Widget 的上下左右边距修改为 0
4.4 中间的 PaintWidget
为了便于查看,将其背景色修改为白色,修改其样式表
background-color: rgb(255, 255, 255);
为 PaintWidget 添加了以上样式表之后,运行后样式表不起作用,需要增加以下代码
PaintWidget::PaintWidget(QWidget *parent) : QWidget{parent}
{this->setAttribute(Qt::WA_StyledBackground, true);
}
经过以上布局之后,效果如下:
本节课到此为止!
【QT开发笔记-基础篇】| 第五章 绘图QPainter | 5.2 界面布局相关推荐
- 【QT开发笔记-基础篇】| 第二章 常用控件 | 2.12 表格控件 QTableWidget
本节对应的视频讲解:B_站_链_接 QTableWidget 是 Qt 中的表格控件,可以行列的形式来展示数据 1. 属性和方法 QTableWidget 有很多属性和方法,完整的可查看帮助文档. 在 ...
- 【QT开发笔记-基础篇】| 第一章 QT入门 | 1.1 为什么要学习Qt
本节对应的视频讲解:B_站_链_接 https://www.bilibili.com/video/BV1334y1776z Qt 是一个跨平台的 C++ 图形用户界面应用程序框架 Qt 为应用程序开发 ...
- 【QT开发笔记-基础篇】| 第一章 QT入门 | 1.4 项目构建流程
本节对应的视频讲解:B_站_链_接 https://www.bilibili.com/video/BV1cW4y1y7Lw 在上一节课中,我们新建了第一个 Qt 工程,其中包括 5 个文件: Hell ...
- 【QT开发笔记-基础篇】| 第一章 QT入门 | 1.2 搭建Qt开发环境
本节对应的视频讲解:B_站_链_接 https://www.bilibili.com/video/BV1Pr4y1x7fh Qt 开发主要有两种开发环境 Qt Creator 它是 Qt 官方提供的开 ...
- 【QT开发笔记-基础篇】| 第一章 QT入门 | 1.5 标准信号槽
本节对应的视频讲解:B_站_链_接 https://www.bilibili.com/video/BV1vW4y1676Q 本节讲解信号和槽的概念,以及标准的信号槽 1. 什么是信号槽 1.1 信号 ...
- 【QT开发笔记-基础篇】| 第一章 QT入门 | 1.3 新建Qt工程
本节对应的视频讲解:B_站_链_接 https://www.bilibili.com/video/BV1UA4y1d7V2 学习任何的编程语言,创建的第一工程都是打印 hello world,学习 Q ...
- 【QT开发笔记-基础篇】| 第二章 常用控件 | 2.2 按钮 QPushButton
本节对应的视频讲解:B_站_视_频 https://www.bilibili.com/video/BV1zG411s7LG QPushButton 是 Qt 中的按钮,通常用于响应用户的点击,然后执行 ...
- 【QT开发笔记-基础篇】| 第一章 QT入门 | 1.7 如何连接信号槽
本节对应的视频讲解:B_站_链_接 https://www.bilibili.com/video/BV1mN4y137H6 信号和槽要建立连接,本质上是通过 `connect` 函数来连接实现的. 但 ...
- 【QT开发笔记-基础篇】| 第一章 QT入门 | 1.6 自定义信号槽
本节对应的视频讲解:B_站_链_接 https://www.bilibili.com/video/BV1gA4y1d7gz 上节课,我们讲解了标准信号槽,标准信号槽中,信号和槽函数,都是 Qt 框架定 ...
最新文章
- Mac OS Terminal Commands
- 在Google Cloud Platform上持续部署Node.js
- EXTJS+ASP.NET上传文件带实时进度条代码
- softmax函数为什么叫softmax?
- Solaris 性能基础
- android data分区(标准)
- 哪个是python程序中与缩进有关的正确说法_关于Python程序中与“缩进”有关的说法中,以下选项中正确的是()。_学小易找答案...
- 工作与生活 -- 平衡是必须的
- (?i) 和 re.sub
- __main__.py:AttributeError: module 'labelme.utils' has no attribute 'draw_label'
- 产品设计体会(6010)有关网站改版
- Oracle中报ora-01033
- 杭电计算机组成原理实验RISC-V 实验 实现运算及传送指令的CPU设计实验 实现访存指令的CPU设计实验 实现转移指令的CPU设计实验
- etf基金代码大全_主要高股息ETF基金汇总
- [魔改整合] [Mod整合包] [1.12.2][Mod整合包]幸运贪婪超级整合-超多好玩的mod
- 用友NC 用户名登录设置步骤
- MongoDB在Windows10上的安装配置和基本语句
- JavaScript 透明背景色
- Python科研数据分析专题之正态性检验
- 3.模板模式_1:什么是模板模式???什么情况适合用模板模式???模板模式如何实现???
热门文章
- 一女子找工作不接受单休遭HR羞辱:我们不是在找小三
- 微信小程序关联企业微信的自建应用后,静默登录
- 中化集团CIO:“拨云见日”是勇敢者的游戏
- 解读阿里巴巴集团发布的《2009年网商发展研究报告》
- excel表格如何改变里面的文字方向?
- 让火狐支持ed2k:///协议
- Android 动画技术
- 特战基地之鸿蒙系统,鸿蒙操作系统开源是怎么回事?智能家居企业应该怎么做?...
- 线上翡翠原石怎么引流,做翡翠的几个高效的引流渠道
- 3.Windows应急响应:蠕虫病毒