QML与widget

杂谈

  • QML-各类建材(水泥、沙石、钢筋等各种材料),可以做出各种炫酷建筑
  • wiget-板房,可靠、功能性强。

QML(Qt Meta Language or Qt Modeling Language):

  • QML 是一种基于 JavaScript 的声明式语言,专注于 UI 和交互设计。它非常适合做现代消费类产品,比如手机 App、智能设备等,因为它的设计灵活,具有高度的定制化能力。
  • QML 的组件(比如按钮)可以通过简单的声明式语法构建和扩展。例如,按钮可以定义为文本+触摸区域+方块,同时你可以轻松修改其样式、动画、透明度等特性。因此,QML 非常适合需要定制和灵活布局的 UI 设计场景。
  • QML 的设计使得开发者可以以类似树结构的方式组织操作流程,这对于需要简洁、直观交互流程的消费类应用非常有效。

QWidgets:

  • QWidget 是 Qt 的另一套 UI 系统,适合用于更复杂的桌面应用程序,特别是生产力工具。这些工具往往需要提供大量的功能和工具,而用户则根据自己的需求去组合使用。
  • Widgets 更加注重稳定性标准化的功能,许多控件的外观和行为是预定义的,虽然可以通过一定的技巧去修改它们的外观,但相对于 QML,灵活性稍差。因此,QWidgets 更适合那些对 UI 灵活性要求不高,但对功能完整性、复杂性有较高需求的场景,比如文本排版软件、设计工具等。

总的来说:

  • 如果你的目标是消费类产品,QML 因为其灵活性和动态交互性会是更好的选择。
  • 如果是为用户提供大量工具让其自由组合使用的生产力工具,QWidgets 的稳定性和功能性则更合适。
    所以你的理解是非常清晰的,QML 更倾向于灵活、可定制的场景,而 Widgets 则更适合稳定、功能集成的场景。

QML 按钮=文本+触摸区域+方块

每个元素都发挥各自作用,分工明确

    Rectangle {
        id: lbtn
        anchors.left: parent.left
        anchors.leftMargin: 10 // 设置左侧间隔为10像素
        anchors.verticalCenter: parent.verticalCenter // 垂直居中
        width: 50
        height: 300
        opacity: 0.7 // 透明度设置为30%
        radius: 6 // 圆角弧度设置为6
        Text {
            anchors.verticalCenter: parent.verticalCenter
            anchors.horizontalCenter: parent.horizontalCenter
            text: qsTr("<")
            font.pointSize: 15
        }
        MouseArea {
            width: parent.width
            height: parent.height
            onClicked: {
                // 更新当前索引到上一张图片,并确保索引为正数
                currentIndex = (currentIndex - 1 + imageList.length) % imageList.length
                // 刷新图片源
                img.source = imageList[currentIndex]
            }
        }
    }

widget

集成度高,定制性低。
在这里插入图片描述

在 QML 中,Button 控件没有 radius 属性。要为 Button 设置圆角,你可以使用 Rectangle 或其他容器控件作为 Button 的背景,并设置圆角属性。下面是一个示例,演示了如何通过 Rectangle 来实现圆角效果:

import QtQuick 2.0
import QtQuick.Controls 2.0

Rectangle {
    width: 200
    height: 300
    color: "lightgray"

    Button {
        width: 50
        height: 300
        opacity: 0.3 // 透明度设置为30%

        // 使用Rectangle作为按钮背景
        Rectangle {
            anchors.fill: parent
            color: "blue" // 按钮的背景颜色
            radius: 6 // 圆角弧度设置为6

            Text {
                anchors.centerIn: parent
                color: "white"
                text: "Click Me"
            }
        }

        // 处理按钮点击事件
        onClicked: {
            console.log("Button clicked")
        }
    }
}

在这个示例中:

Button 控件的 width、height 和 opacity 属性被设置。
在 Button 内部,使用了一个 Rectangle 控件来作为按钮的背景,并设置了 radius 属性来实现圆角效果。
Text 控件用于显示按钮文本,并且被居中在 Rectangle 内部。
这种方式可以让你在 Button 控件中实现圆角效果,并且可以设置其他的样式属性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值