本节对应的视频讲解: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 界面布局相关推荐

  1. 【QT开发笔记-基础篇】| 第二章 常用控件 | 2.12 表格控件 QTableWidget

    本节对应的视频讲解:B_站_链_接 QTableWidget 是 Qt 中的表格控件,可以行列的形式来展示数据 1. 属性和方法 QTableWidget 有很多属性和方法,完整的可查看帮助文档. 在 ...

  2. 【QT开发笔记-基础篇】| 第一章 QT入门 | 1.1 为什么要学习Qt

    本节对应的视频讲解:B_站_链_接 https://www.bilibili.com/video/BV1334y1776z Qt 是一个跨平台的 C++ 图形用户界面应用程序框架 Qt 为应用程序开发 ...

  3. 【QT开发笔记-基础篇】| 第一章 QT入门 | 1.4 项目构建流程

    本节对应的视频讲解:B_站_链_接 https://www.bilibili.com/video/BV1cW4y1y7Lw 在上一节课中,我们新建了第一个 Qt 工程,其中包括 5 个文件: Hell ...

  4. 【QT开发笔记-基础篇】| 第一章 QT入门 | 1.2 搭建Qt开发环境

    本节对应的视频讲解:B_站_链_接 https://www.bilibili.com/video/BV1Pr4y1x7fh Qt 开发主要有两种开发环境 Qt Creator 它是 Qt 官方提供的开 ...

  5. 【QT开发笔记-基础篇】| 第一章 QT入门 | 1.5 标准信号槽

    本节对应的视频讲解:B_站_链_接 https://www.bilibili.com/video/BV1vW4y1676Q 本节讲解信号和槽的概念,以及标准的信号槽 1. 什么是信号槽 1.1 信号 ...

  6. 【QT开发笔记-基础篇】| 第一章 QT入门 | 1.3 新建Qt工程

    本节对应的视频讲解:B_站_链_接 https://www.bilibili.com/video/BV1UA4y1d7V2 学习任何的编程语言,创建的第一工程都是打印 hello world,学习 Q ...

  7. 【QT开发笔记-基础篇】| 第二章 常用控件 | 2.2 按钮 QPushButton

    本节对应的视频讲解:B_站_视_频 https://www.bilibili.com/video/BV1zG411s7LG QPushButton 是 Qt 中的按钮,通常用于响应用户的点击,然后执行 ...

  8. 【QT开发笔记-基础篇】| 第一章 QT入门 | 1.7 如何连接信号槽

    本节对应的视频讲解:B_站_链_接 https://www.bilibili.com/video/BV1mN4y137H6 信号和槽要建立连接,本质上是通过 `connect` 函数来连接实现的. 但 ...

  9. 【QT开发笔记-基础篇】| 第一章 QT入门 | 1.6 自定义信号槽

    本节对应的视频讲解:B_站_链_接 https://www.bilibili.com/video/BV1gA4y1d7gz 上节课,我们讲解了标准信号槽,标准信号槽中,信号和槽函数,都是 Qt 框架定 ...

最新文章

  1. Mac OS Terminal Commands
  2. 在Google Cloud Platform上持续部署Node.js
  3. EXTJS+ASP.NET上传文件带实时进度条代码
  4. softmax函数为什么叫softmax?
  5. Solaris 性能基础
  6. android data分区(标准)
  7. 哪个是python程序中与缩进有关的正确说法_关于Python程序中与“缩进”有关的说法中,以下选项中正确的是()。_学小易找答案...
  8. 工作与生活 -- 平衡是必须的
  9. (?i) 和 re.sub
  10. __main__.py:AttributeError: module 'labelme.utils' has no attribute 'draw_label'
  11. 产品设计体会(6010)有关网站改版
  12. Oracle中报ora-01033
  13. 杭电计算机组成原理实验RISC-V 实验 实现运算及传送指令的CPU设计实验 实现访存指令的CPU设计实验 实现转移指令的CPU设计实验
  14. etf基金代码大全_主要高股息ETF基金汇总
  15. [魔改整合] [Mod整合包] [1.12.2][Mod整合包]幸运贪婪超级整合-超多好玩的mod
  16. 用友NC 用户名登录设置步骤
  17. MongoDB在Windows10上的安装配置和基本语句
  18. JavaScript 透明背景色
  19. Python科研数据分析专题之正态性检验
  20. 3.模板模式_1:什么是模板模式???什么情况适合用模板模式???模板模式如何实现???

热门文章

  1. 一女子找工作不接受单休遭HR羞辱:我们不是在找小三
  2. 微信小程序关联企业微信的自建应用后,静默登录
  3. 中化集团CIO:“拨云见日”是勇敢者的游戏
  4. 解读阿里巴巴集团发布的《2009年网商发展研究报告》
  5. excel表格如何改变里面的文字方向?
  6. 让火狐支持ed2k:///协议
  7. Android 动画技术
  8. 特战基地之鸿蒙系统,鸿蒙操作系统开源是怎么回事?智能家居企业应该怎么做?...
  9. 线上翡翠原石怎么引流,做翡翠的几个高效的引流渠道
  10. 3.Windows应急响应:蠕虫病毒