• 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更丰富、更灵活

    多界面

    直接加载.ui文件

    QT       += uitools
    #include 
    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();
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
  • 相关阅读:
    dayjs格式转换成日期
    Linux命令学习—Apache 服务器(上)
    HummerRisk 使用场景-混合云安全治理(2)--阿里云安全最佳实践
    DTcloud 装饰器
    后台项目总结
    Dobbo简单实战
    java基于ssm+jsp 多用户博客个人网站
    “萝卜快跑”仍然存在出现多处高危网络安全问题
    k8s自动化安装脚本(二进制)
    洛谷题解 | AT_arc069_b [ABC055D] Menagerie
  • 原文地址:https://blog.csdn.net/L_fengzifei/article/details/130790897