【QT开发笔记-基础篇】| 第五章 绘图QPainter | 5.2 界面布局

news2024/11/19 11:22:23

本节对应的视频讲解:B_站_视_频

https://www.bilibili.com/video/BV1fR4y1k7Kt


上节课,初步展示了本章要实现的效果。本节课开始,就从零新建工程,把效果一一实现

首先先把界面搭建起来,也就是把用到的 Label、ComboBox、CheckBox、GroupBox 这些空间,拖拽到界面上,并完成布局:

image-20221204141155438


1. 新建工程

在 Qt Creator 中新建工程,命名为 PainterX,如下:

image-20221206101627223


2. 新建控件

可以直接在当前 Widget 上直接绘制各种图形

但是由于在当前的 Widget 主窗口中,已经放置了很多控件,如果直接在当前窗口中绘制,会很乱,界面也不方便布局

因此,最好的方法是,新建一个控件 PaintWidget 来继承 QWidget,然后在 PaintWidget 中来完成绘制

首先,在项目名称PainterX上右键,选择 “添加新文件…”

image-20221206102114835

接着,自定义的类名为 PaintWidget:

image-20221206103008365

最后,就会在项目中添加 paintwidget.h 和 paintwidget.cpp 两个文件,如下:

image-20221206103447675


3. 控件提升

接下来,就可以放置 Widget 控件,并提升为 PaintWidget


3.1 拖放

创建了自定义的控件 PaintWidget 之后,就可以放置该控件了。

在工具箱中拖放一个 widget 控件,如下:

image-20221206104142661


3.2 提升

首先,在 widget 控件上右键,选择 “提升为…”:

image-20221206104917672

然后,打开如下对话框:

image-20221206105250148

点击 “添加”之后,效果如下:

image-20221206105444597

最后,点击“提升”,完成提升。此时,在设计师界面可以看到提升后的效果,如下:

image-20221206105648582


4. 完成布局

接下来,再拖放其他控件,比如 Label、ComboBox、CheckBox、GroupBox 等

所有控件,拖放完毕,就可以进行布局了,最后的效果如下:

image-20221206123303928

布局的层次结构,可以在右侧的 “对象查看器” 中看到,一目了然。

布局说明如下:

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);
}

经过以上布局之后,效果如下:

image-20221206123303928

本节课到此为止!

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

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

相关文章

R语言实现向量自回归VAR模型

澳大利亚在2008 - 2009年全球金融危机期间发生了这种情况。政府发布了一揽子刺激计划,其中包括2008年12月的现金支付,恰逢圣诞节支出。因此,零售商报告销售强劲,经济受到刺激,收入增加了。 最近我们被客户要求撰写关于…

[附源码]计算机毕业设计JAVA整形美容咨询网站

[附源码]计算机毕业设计JAVA整形美容咨询网站 项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybati…

企业为什么要做知识管理?如何进行知识管理?

今天将和大家聊一聊如何通过5大步骤,帮助企业进行知识管理与知识沉淀。 近年来,随着建设的深入,IT不仅成为企业运营的基础,而且在ERP、CRM、OA等信息系统内沉淀的大量知识成为了企业创新的知识源泉,于是知识管理逐渐提…

第十四届蓝桥杯集训——JavaC组第一篇——Eclipse的使用

Eclipse是一个非常经典的开发工具,我们小时候使用的就是这个工具,转眼就这么多年了,依然还在使用,说明这个软件的健壮性还是非常强的。 本博客讲解Eclipse这个IDE的使用: 目录 Eclipse的基础使用 1、常用菜单中英…

C语言有必要学的很深入细致吗?

c语言作为一门高级语言来说,它本身的知识点是很少的,很容易掌握,它没有诸如『类,接口,继承,多态,分派,模板』等等唬人的概念,当然不是说你不能通过c实现这些概念而是这个…

【R语言】计算信息份额模型 - Computes information share component share weights

INTRO 最近又重新开始做一些价格发现相关的研究,目前针对不同市场的同种标的之间价格发现作用的度量,大多采用Hasbrouk(1995)开发的基于VECM的信息份额模型,通过计算IS指标和CS指标来度量信息份额和价格发现的贡献程度…

【MySQL自学之路】第2天——关系代数计算【理论知识】

目录 前言 基础名词 关系 候选码 关系运算 传统的集合计算(二目运算) 样例表创建【SQL】 专门的关系运算 后记 销毁已经创建的表 前言 在上一节我们提到了关系型数据库和非关系型数据库之间的关系,我们主要以MySQL关系型数据库为主…

11月更新 | Visual Studio Code Python

我们很高兴地宣布,2022年11月发布的适用于 Visual Studio Code Python 和 Jupyter 扩展现已推出! 此版本包括以下改进: 迁移 isort 扩展 Pylance 默认关闭自动导入 Pylint 和 flake8 扩展 用于笔记本单元调试的“Just My Code” 如果您有…

STL常用排序算法、替换算法、拷贝算法(20221207)

STL的常用算法 概述&#xff1a; 算法主要是由头文件<algorithm> <functional> <numeric> 组成。 <algorithm>是所有STL头文件中最大的一个&#xff0c;涉及比较、交换、查找、遍历等等&#xff1b; <functional>定义了一些模板类&#xff0…

《Linux运维实战:Centos7.6一键离线部署mongodb4.2.23副本集群》

一、部署背景 由于业务系统的特殊性&#xff0c;我们需要面向不通的客户安装我们的业务系统&#xff0c;而作为基础组件中的mongodb针对不同的客户环境需要多次部署&#xff0c;作为一个运维工程师&#xff0c;提升工作效率也是工作中的重要一环。所以我觉得有必要针对mongodb4…

window+deepin双系统安装

说明 参考教程&#xff1a;https://baijiahao.baidu.com/s?id1662960328855347503 特别注意&#xff0c;最好用最新的PE工具&#xff0c;我用的 微PE。因为我弄过一次全盘安装&#xff0c;导致整个硬盘在PE工具中的diskgenius无法识别&#xff0c;最终为U盘安装最新版PE工具后…

中国唯一代表!阿里第三次当选Java全球管理组织最高管理席位

12月7日消息&#xff0c;近日&#xff0c;Java全球管理组织JCP披露了最高执行委员会&#xff08;JCP-EC&#xff09;新成员名单&#xff0c;作为唯一中国代表&#xff0c;阿里巴巴再次连任&#xff0c;任期两年。这是阿里连续三次入选JCP最高管理席位&#xff0c;代表着中国技术…

SpringBoot全局异常@ExceptionHandler无法精确匹配问题分析

这个是我的全局异常处理类&#xff0c;以new ThirdException&#xff08;JSON.toJSONString(obj)&#xff09;形式抛出了这个自定义异常&#xff0c;不管从最底层的方法抛出上层不抛&#xff0c;还是从controller的入口开始都抛出&#xff0c;均无法精确匹配。下面分别是自定义…

云原生底座之上,企业如何借力领跑数字化转型?

导语 | 随着数字化转型的加速&#xff0c;越来越多企业选择“乘云而上”&#xff0c;把云战略提升到了全新的高度&#xff0c;并逐步朝着多云架构加速演进。云原生架构的持续迭代&#xff0c;使得云原生技术的应用层出不穷&#xff0c;无论是互联网公司&#xff0c;还是银行、政…

阿里高工熬夜18天码出Java150K字面试宝典,却遭Github全面封杀

大家都知道&#xff0c;现在的Java面试是越来越难了&#xff01;主要原因无非是两个&#xff1a; 随着Java这个行业的兴起&#xff0c;不管是在家待业的、对自己现在工作不满意的、大学选错专业的、缺钱的、想自己学的等等这些人绝大部分都是选择了去学习Java&#xff01;大量人…

(附源码)SSM驾校考试车预约管理系统 毕业设计

SSM驾校考试车预约管理系统 摘 要 科技进步的飞速发展引起人们日常生活的巨大变化&#xff0c;电子信息技术的飞速发展使得电子信息技术的各个领域的应用水平得到普及和应用。信息时代的到来已成为不可阻挡的时尚潮流&#xff0c;人类发展的历史正进入一个新时代。在现实运用中…

数据库主从复制,读写分离,分库分表理解 (数据库架构演变)

主从复制 主从复制, 主要是针对MySQL数据库的高可用性, 容灾性上面. 是叫做高可用性? 高可用性可以简单的理解为容灾性, 稳定性, 针对故障&#xff0c;风险情况下的处理, 备案, 策略. 指系统无中断地执行其功能的能力&#xff0c;代表系统的可用性程度 高可用性通常…

FFmpeg手撕视频(Android端)

前言 FFmpeg是非常强大的音视频处理工具&#xff0c;我们可以使用它来处理视频合成、剪辑、加特效等等操作。 官方文档至上 FFmpeg的官方文档 FFmpeg的官方文档命令真的是太多太多&#xff0c;而且都是英文&#xff0c;感觉精通完这些命令&#xff0c;都够学一门新语言了&#…

SpringSecurity实现登录和自定义权限认证

介绍 Spring Security是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架。它提供了一组可以在Spring应用上下文中配置的Bean&#xff0c;充分利用了Spring IoC&#xff0c;DI和AOP&#xff08;面向切面编程&#xff09;功能&#xff0c;为应用系…

怎么看l2接口十档行情?

怎么看l2接口十档行情&#xff1f;打开任意个股&#xff0c;在盘口即可查看买一至买十&#xff0c;卖一至卖十。Level行情1只能看五档报价&#xff0c;但是五档报价看起来很平静&#xff0c;但是主力很可能会在五档报价之外悄悄布局。使用Level2接口&#xff0c;你可以看到10档…