Qt5下,QWidget系列从QtGui中被剥离出去,成为单独的QtWidget模块。随着Qt Quick2的引入,QtDeclarative也逐渐和QWidget系列也脱离关系。

最终:在Qt5下的GUI编程,有两套不同的东西

  • QtWidget (使用一个被称为 BackingStore 的东西)

  • QtQuick (使用一个被称为 Scene Graph 的东西)

Qt4中的QDeclarativeView等一系列的东西被改成了QQuickView和QQmlItem等分别放到了QtQuick和QtQml模块。
QQuickView这一套框架完全脱离了QWidget的束缚,一路从QSurface到QWindow继承下来,虽说是窗口,但感觉却又不像是窗口。
QQuickView本能是使用OpenGL,使用硬件加速。

QQuickView 提供了一个窗体用于显示UI
QQmlEngine 提供QML运行的环境
QQuickWindow 显示窗体,以及对item对象的管理及用户交互

QQmlApplicationEngine 从Qt5.1开始提供的一个便捷对象 包含QQmlEngine和QQmlComponent能够根据一个qml文件创建一个application。

QQmlContext 类为对象的实例化以及表达式的评估提供了一个上下文环境。所有的对象都在一个特定的上下文中实例化,并且应用程序运行中要执行的表达式都在一个特定的上下文中执行。这个上下文定义了符号是如何被解析的,以及表达式操作的值。

QQmlComponent 类可以用来加载QML文档。它需要QQmlEngine来实例化定义在QML文档中的对象层次

一个典型的QML应用程序有一个C++函数的入口点,该入口点是:实例化一个QQmlEngine并且使用QQmlComponent加载一个QML文档。引擎(QQmlEngine对象)提供了一个默认的QQmlContext,这是一个顶级的上下文,用于执行定义在QML文档中的方法和表达式。定义在QML文档中的对象层次将会通过调用QQmlComponent实例化对象的create()方法被实例化。

客户端可能需要通过注入属性或者对象到上下文中修改引擎提供的默认QQmlContext。它们可以通过调用QQmlEngine::rootContext()方法来访问顶级的上下文。

在实例化对象之后,客户端通常就将控制权传递给应用程序的事件循环,以使得用户输入时间(例如鼠标点击)可以被应用程序分发和处理。

QML里面Row代表一行数据,所以item是按列来排的

QML里面Column是代表一列数据,所以Item是按行排的

在Row和Column中anchors(锚点)是不起作用的

RowLayout和ColumnLayout 也是代表一行与一列但是提供了多种的Layout附加属性并且可以使用anchors

在QML中获取屏幕分辨率,可以通过Screen对象的多种属性方式:例如

QT5.3 杂记的更多相关文章

  1. QT5.3 杂记(转)

    原文转自 https://www.cnblogs.com/aoldman/p/3968280.html Qt5下,QWidget系列从QtGui中被剥离出去,成为单独的QtWidget模块.随着Qt ...

  2. QT5利用chromium内核与HTML页面交互

    在QT5.4之前,做QT开发浏览器只能选择QWebkit,但是有过使用的都会发现,这个webkit不是出奇的慢,简直是慢的令人发指,Release模式下还行,debug下你就无语了,但是webkit毕 ...

  3. qt5中信号和槽的新语法

    qt5中的连接 有下列几种方式可以连接到信号上 旧语法 qt5将继续支持旧的语法去连接,在QObject对象上定义信号和槽函数,及任何继承QObjec的对象(包含QWidget). connect(s ...

  4. [Erlang 0118] Erlang 杂记 V

       我在知乎回答问题不多,这个问题: "对你职业生涯帮助最大的习惯是什么?它是如何帮助你的?",我还是主动回答了一下.    做笔记 一开始笔记软件做的不好的时候就发邮件给自己, ...

  5. Ubuntu在wps-office等qt5程序下不能切换中文fcitx输入法的问题

    经检查,是缺了fcitx-qt的包.比如qt5的程序,需要一个叫fcitx-libs-qt5的包. 如果您在基于qt的程序下不能使用基于fcitx的中文输入法,请检查以下包是否已安装: sudo ap ...

  6. qt5中文代码编码编译问题

    qt中文代码用vs2010编译问题解决 总结说就是qt5默认UTF8不支持微软默认的ANSI(GB2312/GBK).解决办法是把中文字符串全部用 QString::fromLocal8Bit() 封 ...

  7. VS2010+Qt5.4.0 环境搭建(离线安装)

    原创作者:http://blog.csdn.net/solomon1558/article/details/44084969 前言 因项目需要Qt开发GUI,我根据网上资料及自己的经验整理了搭建vs2 ...

  8. qt5.5程序打包发布以及依赖【转】

    玩qt5也有一段时间了,惭愧的是一直没有好好的发布过程序,因为写的都是小程序没啥需要用到发布,而且qt也说不上很熟悉,本来打算到基本掌握qt之后再来研究研究怎么打包程序,最近晚上的空闲时间多了,闲着也 ...

  9. Qt5.5.1编译出来的程序出现libgcc_s_dw2-1.dll的解决方案

    问题如图: 输入"myudp2016.exe 1  " 后出现 这是因为没有在系统环境变量path里加上相关路径,我们添加如下路径: 比如说WIN7系统-开始-计算机-右键-属性- ...

随机推荐

  1. 街机模拟.samsho2

    1.sdyrugal https://www.douyu.com/599516 2.红中哥:西瓜视频  搜索 "红中哥游戏解说" 我搜索到的地址:https://live.ixig ...

  2. java多线程-ReadWriteLock

    大纲: ReadWriteLock接口 ReentrantReadWriteLock ReentrantReadWriteLock使用 一.ReadWriteLock public interface ...

  3. JS获取后台返回的JSON数据

    问题:通过$.get从后台获取了一段json串{"id":"1","name":"ww"},然后要拿到这里面的id和na ...

  4. github创建本地库后关联远程库

    在进行新项目开发时,有时候并不一定先创建远程库,而是先在本地将项目创建,到一定阶段后再与远程库关联.下面步骤解决本地库与远程库在这种情形. 1. 初始化本地库,既然项目已经创建了,相信这个也已经知道了 ...

  5. bug缺陷级别定义

    缺陷定义: 出现以下缺陷测试定义为致命 bug l  系统无响应处于死机状态. l  点击某个菜单后出现“The page cannot be displayed”或者返回异常错误. l  进行某 ...

  6. 在用 Node.js 起服务之前,我们应该知道这些

    网络分层 了解计算机网络的同学都知道 OSI 七层网络模型和 TCP/IP 模型.OSI 七层模型是理论上的网络通信模型,而 TCP/IP 是现实中的网络通信概念模型.它们之间的对比关系参考下图. 本 ...

  7. 关于reduce的使用方法

    var rowData=[ {data:4,date:'06',code:'cr_3',name:'桥吊3'}, {data:1,date:'03',code:'cr_1',name:'桥吊1'}, ...

  8. unity鼠标拖动物体旋转

    using System.Collections; using System.Collections.Generic; using UnityEngine; /// <summary> / ...

  9. MySQL备份和还原数据

    MySQL备份和还原数据 导出整个数据库 mysqldump -uroot -p database_name > db_backup.sql 导入整个数据库 mysql -uroot -p da ...

  10. 用eclipse查看JDK源代码

    把jdk的源代码导入eclipse