当前位置: 首页 > news >正文

QML 第一个应用程序Window

1.创建QML工程

新建文件或者项目-->选择Qt Quick Application

然后生成了一个默认的Window

 

 2.main.cpp中如何加载的qml文件

QQmlApplicationEngine提供了从单个QML文件加载应用程序的便捷方式。

此类结合了QQmlEngine和QQmlComponent,以提供一种方便的方式加载单个QML文件

int main(int argc, char *argv[])
{QGuiApplication app(argc, argv);QQmlApplicationEngine engine;engine.load(QUrl(QStringLiteral("qrc:/main.qml")));if (engine.rootObjects().isEmpty())return -1;return app.exec();
}

3.Window简介

Window的 x,y位置相对于屏幕,或者相对于虚拟桌面,屏幕左上角的坐标为(0,0)。往右 x不断增大,往下y不断增大。

Window { x: 100; y: 100; width: 100; height: 100 }

限制最大、最小高度,最大、最小宽度。

通常新创建的Window,可以自由伸缩,可以使用以下成员限制。

Window {visible: truewidth: 100height: 100title: qsTr("Hello World")maximumHeight:200minimumHeight:50maximumWidth:200minimumWidth:50
}

透明度:

opacity:0.5

信号和槽:
QML中,对于任何一个属性,都会生成一个属性修改的信号和槽函数,比如:以下就是宽和高改变时发出的信号。

void heightChanged(int arg)void widthChanged(int arg)

则对应的槽函数就是,前面加 on 然后大写。

    onWidthChanged: {console.log("width = ",width);}onHeightChanged: {console.log("Height = ",height);}

自定义信号:

自定义了一个属性value,会自动生成onValueChanged的槽函数。

然后创建了一个Button,每点击Button的时候,value自增,会触发valueChanged()信号。

    property int value: 0onValueChanged: {console.log("value = ",value);}Button{width: 50height: 50x:0y:0background: Rectangle{color:"red"}onClicked: {value++}}

焦点问题:

在Window里面做了两个Button,里面有个activeFocusItem属性,捕获当前焦点,自然也会存在焦点改变的信号,和槽onActiveFocusItemChanged。

import QtQuick 2.6
import QtQuick.Window 2.2
import QtQuick.Controls 2.1Window {visible: truewidth: 400height: 400title: qsTr("Hello World")//    maximumHeight:200
//    minimumHeight:50
//    maximumWidth:200
//    minimumWidth:50//    opacity:0.5//    onWidthChanged: {
//        console.log("width = ",width);
//    }//    onHeightChanged: {
//        console.log("Height = ",height);
//    }//    property int value: 0//    onValueChanged: {
//        console.log("value = ",value);
//    }Button{width: 50height: 50id:b1objectName:"b1"x:0y:0focus: truebackground: Rectangle{border.color:b1.focus?"red":"black"border.width:b1.focus?3:1}}Button{width: 50height: 50id:b2objectName:"b2"x:60y:0background: Rectangle{border.color:b2.focus?"yellow":"black"border.width:b2.focus?3:1}}onActiveFocusItemChanged: {console.log("ActiveFocusItem: ",activeFocusItem.objectName);}
}

 

http://www.lryc.cn/news/21850.html

相关文章:

  • RedisAI编译安装(一)
  • 换掉 Maven,我就用Gradle,急速编译
  • 22.2.26打卡 Codeforces Round #853 (Div. 2)
  • 结构体字节对齐、偏移量
  • 全网最全——Java 数据类型
  • 数据结构基础之动态数组
  • 【跟我一起读《视觉惯性SLAM理论与源码解析》】第九章 地图点、关键帧以及图结构
  • 网络安全——数据链路层安全协议(2)
  • 【华为OD机试模拟题】用 C++ 实现 - 热点网络统计(2023.Q1)
  • 人工智能学习07--pytorch09--LeNet
  • java泛型编程初识
  • 代码随想录算法训练营 || 贪心算法 1005 134 135
  • Spring框架面试题
  • 纯x86汇编实现的多线程操作系统实践 - 第五章 AP的守护执行
  • 2023年全国最新高校辅导员精选真题及答案7
  • 使用windwow windbg 吃透64位分页内存管理
  • Java知识复习(五)JVM虚拟机
  • 房屋出租管理系统
  • 2023年全国最新食品安全管理员精选真题及答案6
  • C++中的文件操作
  • 监控生产环境中的机器学习模型
  • 15s了解什么是物联网技术
  • 敲出来的真理-mysql备份大全,备份命令,还原命令,定时备份
  • ATTCK实战系列-红队评估(一)
  • 学python的第二天---差分
  • 数据结构入门5-2(数和二叉树)
  • 把Redis当作队列来用,到底合适吗?
  • Python学习-----项目设计1.0(设计思维和ATM环境搭建)
  • (九)python网络爬虫(理论+实战)——爬虫实战:指定关键词的百度新闻爬取
  • 数据分析面试、笔试题汇总+解析(六)