QML学习01(设置宽度、高度、坐标点、标题,信号与槽,键盘事件)

1、前言

记录一下QML学习的过程,方便自己日后回顾,也可以给有需要的人提供帮助。

2、QML

QML是 Qt 框架中的一种声明式编程语言,专门用于快速设计和开发用户界面(UI)

3、QML和QWidget的区别

特性QML(Qt Quick)QWidget
实现语言QML/JavaScriptC++
动态界面流畅动画、触摸交互动画性能差,适合静态布局
适用场景现代界面、动画传统桌面应用
跨平台支持移动端(Android/iOS)、嵌入式主要支持桌面端(Windows/macOS/Linux)
复杂性需与C++后端结合直接通过C++实现
开发效率快速迭代,适合UI密集型项目编码量大,适合逻辑密集型项目

3、QtQuick下的Windows应用

主要讲QML在Windws下如何设置宽度,高度,坐标点,标题,信号与槽,键盘事件
import QtQuick 2.12
import QtQuick.Window 2.12
import QtQuick.Controls 2.5
Window {    //root控件    父窗口是主界面
    visible: true
    width: 640
    height: 480
    title: qsTr("My QML")
    signal mysignal()       //信号
    property int myValue: 0

    minimumWidth: 300       //最小宽度
    minimumHeight: 400      //最小高度

    maximumWidth: 700       //最大宽度
    maximumHeight: 600      //最大高度

    opacity: 0.8       //不透明度0-1

    //触发信号,名称第一个字母要大写
    onMysignal: {

    }

    //改变宽度,也会触发槽函数
    onWidthChanged: {
    console.log("width",width)
    }

    //自动生成属性修改槽函数
    onMyValueChanged: {

    }

    //按钮1
    Button {
        id:btn1
        focus: true
        objectName: "btn1"
        width: 50
        height: 50
        background: Rectangle{
            border.color: btn1.focus ? "blue" : "back"
        }

        //点击事件
        onClicked: {
            console.log("btn1 clicked");
        }

        //键盘事件
        //按下键盘右键,焦点移动到btn2上
        Keys.onRightPressed: {
            btn2.focus = true;
        }
    }

    //按钮2
    Button {
        id:btn2
        x:100
        objectName: "btn2"
        width: 50
        height: 50
        background: Rectangle{
            border.color: btn2.focus ? "blue" : "back"
        }

        onClicked: {
            console.log("btn2 clicked");
        }

        //键盘事件
        //按下键盘左键,焦点移动到btn2上
        Keys.onLeftPressed: {
            btn1.focus = true;
        }

    }

    //控件焦点
    onActiveFocusItemChanged: {
        console.log("active focus item changed",activeFocusItem,"object name",activeFocusItem.objectName)
    }
}

4、总结

以上就是QML的一些基础知识了,后续还会继续更新,浏览过程中,如若发现错误,欢迎大家指正,有问题的欢迎评论区留言或者私信。最后,如果大家觉得有所帮助,可以点一下赞,谢谢大家!祝大家天天开心,顺遂无虞!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值