• QML 碰到的奇怪问题


    text elied属性失效

    elied属性就是当Text的文本文字超过Text的宽度时。文字会出现省略的效果。

    import QtQuick 2.9
    import QtQuick.Window 2.3
    
    Window {
        visible: true
        width: 640
        height: 480
        title: qsTr("Hello World")
        Rectangle{
            anchors.centerIn: parent
            width: parent.width / 3
            height: parent.height / 2
            border.color: "black"
            Text{
                anchors.centerIn: parent
                //width: parent.width
                text: "aaaaaa1234567890"
                elide: Text.ElideRight
            }
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    可以看出当 Text本身居中时,文字省略效果就已经失效了。当时如果取消注释会发现文字省略效果又有了。但是文字初始并不是居中的而是左对齐的效果

    qml splice只传递一个参数时。无作用

        Rectangle{
            width: 40
            height: 40
            color: "red"
            MouseArea{
                anchors.fill: parent
                onClicked: {
                    var theArray = [1, 2, 3, 4, 5];
                    theArray.splice(2);
                    console.log(theArray);
                }
            }
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    程序输出

    qml: [1,2,3,4,5]
    qml: [1,2,3,4,5]
    
    • 1
    • 2

    毫无作用。
    相反在html中使用的效果如下

    DOCTYPE html>
    <html>
        <head>
            <title>这是一个简单的html页面title>
        head>
        <body>
            <script>
                let theArray = [1, 2, 3, 4, 5];
                theArray.splice(2);
                console.log(theArray);
            script>
        body>
    html>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    输出

    [1, 2]
    
    • 1

    且在mdn中也提到了,该函数的作用如下,就应该表现和html中的一致才对
    在这里插入图片描述

    QQmlContext setContextProperty设置的时机不正确导致在运行时出现警告信息

    虽然警告信息通常来说没啥问题但是能够避免还是尽量避免。
    弹出警告信息

    QQmlContext *context = engine.rootContext();
    engine.load(QUrl(QStringLiteral("qrc:/main.qml")));
    context->setContextProperty("myModel", 4);
    
    • 1
    • 2
    • 3

    qml中使用

    Repeater{
    	anchors.fill: parent
    	model: myModel
    	delegate: Rectangle{
    		width: parent.width
    		height: 40
    		color: "red"
    		border.color: "black"
    	}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    也就是说在engine加载文件后才注册全局属性然后使用就会报警告,反之则是正常的。

  • 相关阅读:
    【数论】质数
    离散数学 --- 特殊图 --- 欧拉图,哈密顿图
    .net项目部署Docker
    第四章 Docker 使用示例
    2022年python国际化课程上机考试二题解
    alibaba数据同步组件canal的实践整理
    RPA-2 之B/S第一讲:selenium驱动下载与安装
    REST风格
    Qt入门(一)——自己动动手写一个简易的用户化界面(Qt命令行模式)
    数字孪生技术打造智慧矿山可视化解决方案
  • 原文地址:https://blog.csdn.net/qq_47500842/article/details/133048177