Qml-Button的使用

Qml-Button的使用

Button属性

  1. Button的继承关系: Button -- AbstractButton -- Control -- Item; Button的属性主要继承于AbstractButton。
  2. AbstractButton属性主要如下:
    a.action :是一个Action类型属性,与QAction类似,用于提供快捷键,图标。
    b.autoRepeat :长按时,重复发送pressed()、released()、clicked()信号;此属性设置为true, onPressAndHold()信号不会发送;配套两个属性:autoRepeatDelay autoRepeatInterval
    c.autoRepeatDelay :长按时,第一次重复延迟时间,单位毫秒(ms),默认300ms
    d.autoRepeatInterval :长按时,重复间隔
    e.checkable :按钮是否使能checkable。
    f.checked : 按钮是否checked.
    g.icon:控制图标的属性组,需要特别注意
    icon.source icon.color *;icon.color 如果未设置透明,icon.source 设置了正确的图片,会被color颜色覆盖。
    h.display :用于控制图标和文本显示位置,值和效果图对比图如下:

Button的实例代码

c 复制代码
import QtQuick
import QtQuick.Controls
//

Item{

    height: 480
    width: 320

    Row{
        anchors.top: parent.top
        anchors.left: parent.left
        anchors.margins: 10
        spacing:10

        Button{
            id:idBut1
            text:"Button"
            height: 30

            onClicked: {
                console.log("idBut1 Clicked");
            }

            onPressed: {
                console.log("idBut1 onPressed");
            }

            onReleased:  {
                console.log("idBut1 onReleased");
            }

            onToggled: {
                console.log("idBut1 onToggled");
            }
            //按下,在按钮区域外释放(release)会触发 canceled 信号
            onCanceled: {
                console.log("idBut1 onCanceled");
            }

            onPressAndHold: {
                console.log("idBut1 onPressAndHold");
            }
        }

        Button{
            id:idButRepeat
            text:"Repeate"
            autoRepeat: true                    //autoRepeat 为true,pressAndHold 信号不得触发
            autoRepeatDelay: 500                //初次一直按下,重复的延迟时间 ms,默认是300
            autoRepeatInterval: 300             //按下后,重复的间隔时间 ms 默认是200 ms
            height: 30

            onClicked: {
                console.log("idButRepeat Clicked");
            }

            onPressed: {
                console.log("idButRepeat onPressed");
            }

            onReleased:  {
                console.log("idButRepeat onReleased");
            }

            onToggled: {
                console.log("idButRepeat onToggled");
            }

            onCanceled: {
                console.log("idButRepeat onCanceled");
            }

            onPressAndHold: {
                console.log("idButRepeat onPressAndHold");
            }
        }

        Button{
            id:idButCheckable
            text:"Checkable"
            height: 30
            checkable: true

            onClicked: {
                console.log("idButCheckable Clicked");
            }

            onPressed: {
                console.log("idButCheckable onPressed");
            }

            onReleased:  {
                console.log("idButCheckable onReleased");
            }
            //属性checkable:true,在clicked时,checked状态发生改变,触发toggled信号
            onToggled: {
                console.log("idButCheckable onToggled ",idButCheckable.checked ? " checked " : " unchecked ");
            }

            onCanceled: {
                console.log("idButCheckable onCanceled");
            }

            onPressAndHold: {
                console.log("idButCheckable onPressAndHold");
            }
        }

        Button{
            id:idButIcon
            text:"ButtonIcon"
            //flat:true                                                                   //flat为true,不绘制背景外观
            //highlighted: true
           // height: 30
            icon.source: "qrc:/qt/qml/text/qmlDemo/Resource/face-smile.png"             //使用qrc资源,格式"qrc:前缀/前缀后相对路径"
            icon.color: "transparent"                                                   //如果qrc路径没问题,color未设置,是个黑色圆圈
            //display: AbstractButton.IconOnly                                          //枚举值一般首字母大写
            display: AbstractButton.TextBesideIcon
        }

    }

}

Button实例代码运行结果如下:

结论:

1.信号发生顺序: pressed -- (pressAndHold) -- (toggled)-- release -- clicked(canceled);如果有checkable:true,会有toggled信号。鼠标释放时,信号发射顺序:(toggled) -- release -- clicked(canceled)。

2.icon.color 和 icon.source:如果要设置Button显示图标,在保证icon.souce 图片路径正确前提下, icon.color 需要为"transparent";

相关推荐
赵民勇6 小时前
Qt QML中Component模块详解
qt
不会c嘎嘎7 小时前
QT中的常用控件 (三)
开发语言·qt
闫有尽意无琼7 小时前
Qt局部变量“遮蔽(shadow)”成员变量导致lambda传参报错
开发语言·qt
寻找华年的锦瑟7 小时前
Qt-YOLO-OpenCV
qt·opencv·yolo
南桥几晴秋8 小时前
Qt显示类控件
开发语言·c++·qt
_OP_CHEN8 小时前
【从零开始的Qt开发指南】(十八)Qt 事件进阶:定时器、事件分发器与事件过滤器的实战宝典
qt·前端开发·事件过滤器·qt事件·gui开发·qt定时器·事件分发器
晨风先生8 小时前
打包Qt程序的脚本package.bat
开发语言·qt
环黄金线HHJX.8 小时前
《QuantumTuan ⇆ QT:Qt》
人工智能·qt·算法·编辑器·量子计算
环黄金线HHJX.9 小时前
拼音字母量子编程PQLAiQt架构”这一概念。结合上下文《QuantumTuan ⇆ QT:Qt》
开发语言·人工智能·qt·编辑器·量子计算
abcd_zjq10 小时前
VS2022+QT6.9配置ONNXruntime GPU、CUDA、cuDNN(附官网下载链接)(GPU开启代码示例)
qt·visual studio·cuda·onnx