Qt - UI进阶

这篇具有很好参考价值的文章主要介绍了Qt - UI进阶。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

布局

https://blog.csdn.net/kongcheng253/article/details/128769765

控件及其坐标

pos/position/scenePosition/globalPosition

pos()函数返回的是相对于当前控件的坐标;
position()函数返回的是相对于当前控件的坐标,但是如果鼠标事件来自于一个子控件,那么它返回的坐标相对于子控件的坐标;
scenePosition()函数返回的是相对于场景的坐标,也就是说它返回的是绝对坐标。
因此,这三个函数的区别在于返回的坐标的参考系不同

例子

假设widget窗口中有一个QLabel控件,控件中包含一个非填充的图片,鼠标点击该图片,则:
pos()函数返回的是相对于QLabel控件的坐标;
position()函数返回的是相对于图片的坐标,也就是说它返回的坐标相对于QLabel控件的坐标加上图片在QLabel控件中的位置偏移量;
scenePos()函数返回的是相对于场景的坐标,但是QLabel并没有关联到场景中,所以它返回的坐标并没有实际意义; ???
globalPos()函数返回的是相对于屏幕的坐标,也就是说它返回的坐标是绝对坐标

场景和视图???

绘制

QPainter / QPen / QBrush / QPalette

QPainter、QPen、QBrush和QPalette都是Qt中用于绘图和界面渲染的类,它们之间有一定的联系和区别

QPainter:QPainter是Qt中的一个用于绘图的类,它提供了各种绘图操作函数,例如drawLine()、drawRect()、drawEllipse()等。通过QPainter,我们可以在Qt中进行各种自定义绘图操作,绘制出美观的界面

QPen:QPen是Qt中的一个用于绘制线条的类,它定义了线条的颜色、宽度、样式等属性。在使用QPainter绘图时,我们可以通过设置QPen来控制线条的属性,从而实现各种线条效果

QBrush:QBrush是Qt中的一个用于绘制填充区域的类,它定义了填充区域的颜色、样式等属性。在使用QPainter绘图时,我们可以通过设置QBrush来控制填充区域的属性,从而实现各种填充效果

QPalette:QPalette是Qt中的一个用于控制界面颜色的类,它定义了控件的背景色、前景色、文本颜色等属性。在Qt中,每个控件都有一个关联的QPalette对象,我们可以通过设置QPalette来改变控件的颜色和外观效果

总的来说,QPainter、QPen、QBrush和QPalette都是用于绘制和渲染界面的类,它们之间的联系是通过QPainter来实现的。QPainter是Qt中最主要的绘图类,通过它我们可以设置QPen、QBrush和QPalette来控制绘图效果和界面外观

QPalette / QBrush

QPalette和QBrush的主要区别在于它们的作用和使用场景不同,前者主要用于定义窗口部件的颜色和样式,后者主要用于绘制图形和图像,且可以将QBrush理解为实现UI控件绘制时所需的“画笔”,而QPalette则是绘制颜色和填充属性的管理器

QPalette::setColor / setBrush

setColor()函数仅能对单色背景进行操作,而setBrush()可以使用更复杂的画笔(QBrush)对象。因此,setColor()只能设置一种纯色作为背景(foreground 或 background),而setBrush()支持更多的背景主题类型,如渐变、图片纹理等

setColor()可以直接设置颜色,比如QColor::red;setBrush()则需要通过QBrush库的其他方法先创建一个画刷对象,例如调用QBrush(QColor(…))方法来创建指定颜色的画刷对象。所以在设置简单背景时,setColor()会比较方便,但是在需要复杂背景或前景时,setBrush()的API更丰富、更灵活文章来源地址https://www.toymoban.com/news/detail-507612.html

多界面

直接加载.ui文件

QT       += uitools
#include <QtUiTools/QUiLoader>
Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);

    QUiLoader loader;
    QFile file("form2.ui");
    file.open(QFile::ReadOnly);
    QWidget *myWidget = loader.load(&file);
    file.close();
    
    myWidget->show();
}

到了这里,关于Qt - UI进阶的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Qt - UI进阶

    https://blog.csdn.net/kongcheng253/article/details/128769765 pos()函数返回的是相对于当前控件的坐标; position()函数返回的是相对于当前控件的坐标,但是如果鼠标事件来自于一个子控件,那么它返回的坐标相对于子控件的坐标; scenePosition()函数返回的是相对于场景的坐标,也就是说它返

    2024年02月11日
    浏览(43)
  • 解决QT中UI控件布局更改后运行结果没有发生变化的问题

    在学习QT中,遇到了一个问题,那就是当我UI中更改了控件布局后,运行的结果却并没有发生改变,于是我上网查找了一些资料,大多略显麻烦。 效果如下:这是UI控件更改布局后  这是运行后结果 显然,UI文件中并没有更新。 我的解决方案是: 1.首先在项目文件中找到UI文件

    2024年02月11日
    浏览(83)
  • QT-------UI基础到进阶,干货满满!!!

    目录 一、UI基础 1. QWidget类(掌握) 2. 添加子组件(掌握) 3. 样式表(熟悉) 二、UI进阶 1. Designer 设计师(掌握) 2. 布局 Layout(掌握) 3. QWidget属性(掌握) 4. UI指针(掌握) 5. 基础组件(熟悉) 5.1 标签 QLabel 5.2 按钮类 5.3 单行文本编辑框 QLineEdit 5.4 组合框 QComboBox 5.5 一

    2024年02月04日
    浏览(49)
  • 在Django+Vue3+GraphQL的Blog例子代码中引入Element-Plus UI Framework

    Vue3的UI Framework中有Element-Plus、BalmUI、Quasar、PrimeVue、Ant Design Vue等UI Framework. Element-Plus是Element-UI的Vue3版,Element-UI的使用人数的基数较大,Github上的Star数也较多,就选择了Element-Plus作为这个Blog项目的UI Framework. UI Framework的好处就是提供了相较裸Html+CSS开发起来更好看和方便一些.

    2023年04月13日
    浏览(42)
  • 为什么要给数据库加索引?转自 https: //blog.tankery.me/development/why-we-need-indexes-for-database

    这篇文章不是数据库索引的使用文档,不会给每个功能的使用都做介绍,而是通过我自己的案例,对案例中遇到的几个点做详细的说明。如果想查看具体的使用帮助,可以参考官网的文档:Query Planning “老谭,测试发现睡眠历史记录页面的打开速度太慢了,你给快速解决一下

    2024年02月03日
    浏览(38)
  • 开箱即用的企业级前后端分离【.NET Core6.0 Api + Vue 2.x + RBAC】权限框架-Blog.Core

    今天要给大家推荐一个开箱即用的企业级前后端分离【.NET Core6.0 Api + Vue 2.x + RBAC】权限框架( 提高生产效率,快速开发就选它 ):Blog.Core。 Blog.Core通过详细的文章和视频讲解,将知识点各个击破,入门ASP.Net Core不再难。 项目功能完善,并且采用流行的前后端分离架构,代码

    2024年01月18日
    浏览(93)
  • UI开发布局-HarmonyOS应用UI开发布局

    UI页面的构建不用再像Android开发过程中在.xml文件中书写,可直接在页面上使用声明式UI的方式按照布局进行排列,构建应用的页面。 如下代码使用Row、Column构建一个页面布局,在页面布局中添加组件Text、Button,共同构成页面: 在实际开发的过程中,按照如下流程进行页面的

    2024年04月13日
    浏览(67)
  • 【Qt】盒子布局、网格布局、表单布局和堆栈布局

    QBoxLayout可以在水平方向或垂直方向上排列控件,分别派生了QHBoxLayout、QVBoxLayout子类。 QHBoxLayout:水平布局,在水平方向上排列控件,即:左右排列。 QVBoxLayout:垂直布局,在垂直方向上排列控件,即:上下排列。 水平布局、垂直布局除了构造时的方向(LeftToRight、TopToBotto

    2024年02月06日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包