QML(Qt Meta-Object Language,Qt元对象语言),Qt推出的Qt Quick技术的一部分,是一种用于描述应用程序用户界面的声明式编程语言。 它使用一些可视组件以及这些组件之间的交互来描述用户界面。QML是一种高可读性的语言,可以使组件以动态方式进行交互,并且允许组件在用户界面中很容易地实现复用和自定义。

QML是Qt Quick (Qt4.7.0+的新特性)核心组件之一:Qt Quick是一组旨在帮助开发者创建在手机、媒体播放器、机顶盒和其他便携设备上使用越来越多的直观、现代、流畅UI的工具集合。
如果学过前端开发,会发现QML的思想跟Vue.js、Angula等非常相似。语法格式非常像HTML+CSS,也支持JavaScript形式的编程控制。Qt Designer可以设计出.ui界面文件,但是不支持和Qt原生C++代码的交互。而Qt Creator可以设计出.qml文件,QML可以和Qt原生代码进行交互,作为MVC模型中的“View”。
国内Vue.js很普及,后续会出一个完整的QML与Vue的功能对照表,如:生命周期、Component、信号与Slot、计算属性、Transition动画、Repeater/V-for等。
MVC模式(Model–view–controller)是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model)、视图(View)和控制器(Controller)。

MVC模式最早由Trygve Reenskaug在1978年提出,是施乐帕罗奥多研究中心(Xerox PARC)在20世纪80年代为程序语言Smalltalk发明的一种软件架构。MVC模式的目的是实现一种动态的程式设计,使后续对程序的修改和扩展简化,并且使程序某一部分的重复利用成为可能。除此之外,此模式透过对复杂度的简化,使程序结构更加直观及容易扩展和维护。软件系统透过对自身基本部分分离的同时也赋予了各个基本部分应有的功能。专业人员可以依据自身的专长分组:
在Qt开发中,QML就是作为View(+部分简单的Model)模块。而Python/C++则实现Controller+Model功能。
在安装完Python(> 3.6)、PySide6之后,其实就可以直接开发简单的app了。
pip install pyside6
当然,有可视化开发环境会事半功倍,界面开发可使用Qt Creator(注意跟Qt Designer不同,Designer只能设计.ui文件),Python调试则使用PyCharm。
Qt Creator有社区版本,Windows下安装步骤:
下载Qt在线安装程序: qt official_releases/online_installers (qt.io)
注册一个Qt账号
运行qt-unified-windows-x86-4.3.0-1-online.exe
选择自定义安装Custom installation

Qt Creator 7.0.2和相应debug模块

耐心等待安装完成,大概下载700MB,安装后占用约4GB空间。
在开始菜单里找到Qt Creator,运行:

注意:Qt现在推广Qt Design Studio,所以把Qt Creator里可视化编辑QML的工具给隐藏了,要自行打开:菜单Help --> About Plugins... --> 勾选Designer,重启程序。

Qt Creator: File --> New Project...
会自动按模板创建3个文件:
pyqml.pyproject
{
"files": ["main.py", "main.qml"]
}
main.py
import os
from pathlib import Path
import sys
from PySide6.QtGui import QGuiApplication
from PySide6.QtQml import QQmlApplicationEngine
if __name__ == "__main__":
app = QGuiApplication(sys.argv)
engine = QQmlApplicationEngine()
engine.load(os.fspath(Path(__file__).resolve().parent / "main.qml"))
if not engine.rootObjects():
sys.exit(-1)
sys.exit(app.exec_())
这个Python主程序非常简洁:
app = QGuiApplication(sys.argv)
engine = QQmlApplicationEngine()
engine.load("main.qml")
main.qml
import QtQuick
import QtQuick.Window
Window {
width: 640
height: 480
visible: true
title: qsTr("Hello World")
}
这个QML主界面,内容也非常一目了然:
Window,按"F1",可以直接查询对应的帮助文档左边一列工具栏里,先点击“Project",选择Python解释器(注意确保PySide6已安装)

点工具栏左下角绿色运行键,第一个Py QML程序就顺利运行了:

如果是复杂的Python程序,可以在PyCharm中打开这个目录,方便调试 .py文件。
点工具栏"Edit",可以编辑源文件,双击“main.qml“,这时工具栏 "Design" 就变亮了。
点工具栏"Design",右上角可选显示方式,一般使用"Essentials" 或 "UX-Design"。

左边"Components"点 "+",添加"QtQuick.Controls,Layouts"等显示到常用组件

我们来随便试试吧:
拖一个"Text"、一个"Button"组件到中间"Form Editor",app主界面上。右边的"Text Editor"上会自动更新.qml文件。同理,你在外部改动 .qml文件后,预览也会自动更新。语法跟CSS类似。
给"Button"添加一个onClicked事件,可以看到就是JavaScript语法,实际上,你可以在QML文件里直接写任意js代码并调用。当然,Controller控制功能还是建议与View分开。

保存.qml,再次运行,可以看到界面已经能响应Button点击了,同时console.log信息也输出“Application Output”了。
是不是有回到Vue.js写前端的熟悉感觉了哈?

C:\Users\kevinqq\AppData\Local\Programs\Python\Python38\python.exe C:/Users/kevinqq/git/qtProject/pyqml/main.py
<PySide6.QtGui.QWindow(0x22fe7329) at 0x0000022F>
qml: button clicked
qml: button clicked
Process finished with exit code 0
下一篇,使用QML来改写第2篇的天气预报程序,涉及信号、动画
我正在玩HTML5视频并且在ERB中有以下片段:mp4视频从在我的开发环境中运行的服务器很好地流式传输到chrome。然而firefox显示带有海报图像的视频播放器,但带有一个大X。问题似乎是mongrel不确定ogv扩展的mime类型,并且只返回text/plain,如curl所示:$curl-Ihttp://0.0.0.0:3000/pr6.ogvHTTP/1.1200OKConnection:closeDate:Mon,19Apr201012:33:50GMTLast-Modified:Sun,18Apr201012:46:07GMTContent-Type:text/plain
目录前言滤波电路科普主要分类实际情况单位的概念常用评价参数函数型滤波器简单分析滤波电路构成低通滤波器RC低通滤波器RL低通滤波器高通滤波器RC高通滤波器RL高通滤波器部分摘自《LC滤波器设计与制作》,侵权删。前言最近需要学习放大电路和滤波电路,但是由于只在之前做音乐频谱分析仪的时候简单了解过一点点运放,所以也是相当从零开始学习了。滤波电路科普主要分类滤波器:主要是从不同频率的成分中提取出特定频率的信号。有源滤波器:由RC元件与运算放大器组成的滤波器。可滤除某一次或多次谐波,最普通易于采用的无源滤波器结构是将电感与电容串联,可对主要次谐波(3、5、7)构成低阻抗旁路。无源滤波器:无源滤波器,又称
@作者:SYFStrive @博客首页:HomePage📜:微信小程序📌:个人社区(欢迎大佬们加入)👉:社区链接🔗📌:觉得文章不错可以点点关注👉:专栏连接🔗💃:感谢支持,学累了可以先看小段由小胖给大家带来的街舞👉微信小程序(🔥)目录自定义组件-behaviors 1、什么是behaviors 2、behaviors的工作方式 3、创建behavior 4、导入并使用behavior 5、behavior中所有可用的节点 6、同名字段的覆盖和组合规则总结最后自定义组件-behaviors 1、什么是behaviorsbehaviors是小程序中,用于实现
遍历文件夹我们通常是使用递归进行操作,这种方式比较简单,也比较容易理解。本文为大家介绍另一种不使用递归的方式,由于没有使用递归,只用到了循环和集合,所以效率更高一些!一、使用递归遍历文件夹整体思路1、使用File封装初始目录,2、打印这个目录3、获取这个目录下所有的子文件和子目录的数组。4、遍历这个数组,取出每个File对象4-1、如果File是否是一个文件,打印4-2、否则就是一个目录,递归调用代码实现publicclassSearchFile{publicstaticvoidmain(String[]args){//初始目录Filedir=newFile("d:/Dev");Datebeg
ES一、简介1、ElasticStackES技术栈:ElasticSearch:存数据+搜索;QL;Kibana:Web可视化平台,分析。LogStash:日志收集,Log4j:产生日志;log.info(xxx)。。。。使用场景:metrics:指标监控…2、基本概念Index(索引)动词:保存(插入)名词:类似MySQL数据库,给数据Type(类型)已废弃,以前类似MySQL的表现在用索引对数据分类Document(文档)真正要保存的一个JSON数据{name:"tcx"}二、入门实战{"name":"DESKTOP-1TSVGKG","cluster_name":"elasticsear
从一开始,我就是一个Windows高手。我从MS-DOS开始。我安装了Windows2.1以及此后的所有Windows。现在,我家里有10台不同的Windows机器在运行,从Windows7Ultimate到各种版本的WindowsServer。我还没有完成Windows8,也不想去那里。我在服务器和各种软件方面都有UNIX经验,但它并不是我的首选环境。但是,我想我正在转换。我试图假装使用Cygwin和MSYS在Windows下运行UNIX。我的目的是搭建一个开发环境。两者都让我失望了。我花了比开发更多的时间来解决一系列技术问题。这是NotAcceptable。到目前为止,我的Ruby
有没有办法快速将表格格式的ruby哈希打印到文件中?如:keyAkeyBkeyC...1232343451253474456...其中散列的值是不同大小的数组。还是使用双循环是唯一的方法?谢谢 最佳答案 试试我写的这个gem(在表中打印散列、ruby对象、ActiveRecord对象):http://github.com/arches/table_print 关于ruby-如何以表格格式快速打印Ruby哈希值?,我们在StackOverflow上找到一个类似的问题:
电脑启动出现显示器黑屏是一个相当常见的问题。如果您遇到了这个问题,不要惊慌,因为它有很多可能的原因,可以采取一些简单的措施来解决它。在本文中,小编将介绍下面4种常见的电脑启动后显示器黑屏的原因,排查这些原因,快速解决! 演示机型:联想Ideapad700-15ISK-ISE系统版本:Windows10一、显示器问题如果出现电脑启动后显示器黑屏的情况。那么首先您需要检查一下显示器是否正常工作。您可以通过更换另一个显示器或将当前显示器连接到另一台计算机来检查显示器是否存在问题。如果问题仍然存在,那么您可以排除显示器故障的可能性。 二、显卡问题如果您的电脑配备了独立显卡,那么显卡故障也可能是导致电脑
文章目录1.任务背景2.任务目标3.相关知识点4.任务实操4.1安装配置JDK4.2启动FISCOBCOS4.3下载解压WeBASE-Front4.4拷贝sdk证书文件4.5启动节点4.6访问节点4.7检查运行状态5.任务总结1.任务背景FISCOBCOS其实是有控制台管理工具,用来对区块链系统进行各种管理操作。但是对于初学者来说,还是可视化界面更友好,本节就来介绍WeBASE管理平台,这是一款微众银行开源的自研区块链中间件平台,可以降低区块链使用的门槛,大幅提高区块链应用的开发效率。微众银行是腾讯牵头设立的民营银行,在国内民营银行里还是比较出名的。微众银行参与FISCOBCOS生态建设,一定
TCL脚本语言简介•TCL(ToolCommandLanguage)是一种解释执行的脚本语言(ScriptingLanguage),它提供了通用的编程能力:支持变量、过程和控制结构;同时TCL还拥有一个功能强大的固有的核心命令集。TCL经常被用于快速原型开发,脚本编程,GUI和测试等方面。•实际上包含了两个部分:一个语言和一个库。首先,Tcl是一种简单的脚本语言,主要使用于发布命令给一些互交程序如文本编辑器、调试器和shell。由于TCL的解释器是用C\C++语言的过程库实现的,因此在某种意义上我们又可以把TCL看作C库,这个库中有丰富的用于扩展TCL命令的C\C++过程和函数,所以,Tcl是