一说起Qt 大都会想起Qt的GUI编程,具体到某个类的话,最多的就是QWidget类及其子类了。

其实Qt中还有基于项的图形视图,具体来说QGraphicsView,QGraphicsScene,QGraphicsItem三个类了。

看看这个文章关于QGraphics*

和QWidget比较,QGraphics有什么不同呢?

主要在如下方面吧:

1.QGraphics*类可以设置rotation,但是QWidget不行。

2.基于上述原因,QWidget在移动设备上(分横竖屏)就不能很好的适应屏幕的方向

3.由于是基于项的图形视图,管理一个个QGraphicsItem变得十分容易,可以在一个Scene中管理成百上千的视图项

4.qml是基于QGraphics的(Qt4&5),而qml已经成为Qt未来发展的趋势(将类注册到脚本环境中,在脚本环境中被管理和动态创建)

但QGraphics中没有像QWidget类那样有丰富的控件。而且将QWidget进行重写,变成QGraphics类不是那么明智,基于此,QGraphics是支持将QWidget添加到他的视窗体系的。

QGraphicsProxyWidget 类

从QGraphicsView获取当前的QGraphicsScene,然后调用QGraphicsScene::addWidget(QWidget *) ,这个函数将一个你想要添加的QWidget添加到视图系统中,并返回一个QGraphicsProxyWidget  对象指针,通过QGraphicsProxyWidget 对象可以设置QWidget的rotation,transfrom等等QGraphicsItem专有的属性

好了说了这么多,其实我想说的是QtQuick 的原c++类是QDeclarative* ,而QDeclarative*主要继承自对应的QGraphics*类,这也说明了QtQuick是基于项的视图系统。

然后,你就可以将之前的编写好的QWidget*类的控件注册到qml中,再以脚本的方式动态创建。这样的话,qml的拓展机制实在是太变态了(得益于Qt的元对象系统)。

没有图你说个****啊~

关于代码和实例明天在上传吧~

后记:其实QtQuick是Qt发展的产物,Qt的QGraphics*视图以及QStyle(qss)其实就是QtQuick的雏形了,而动态脚本编程越来越受欢迎,QtQuick(qml)成为Qt未来的趋势也是理所当然的。关于脚本的执行效率,总是会解决的。这不,Qt公司推出了QtQuick Compiler

参考:http://blog.csdn.net/qyvlik/article/details/42268501

杂烩:QWidget、QGraphics、QtQuick的更多相关文章

  1. 该用 QGraphicsView ? QtQuick-QML ?

    目前QtQuick (2014/3/6) 已经发展了有一段时间了,很多人在用因此我也想看看是否适合我目前的项目. 我要做的是一个类似3DMax中的材质编辑器的东西,里面有成千上万的”表单“(不知道怎么 ...

  2. QML 信号与响应方法的总结

    以下内容为本人的著作,如需要转载,请声明原文链接微信公众号「englyf」https://www.cnblogs.com/englyf/p/16748191.html 如果面试过程中,面试官想了解你对 ...

  3. QGraphics

    QGraphicsView和QGraphicsScene QGraphicsScene提供一个场景,可以添加各种item,QGraphicsView用于将元素显示,并支持旋转和缩放:可以将QGraph ...

  4. [转载]震惊!QWidget竟然可以嵌入到QML中,QMl窗口句柄竟然是这样获取

      背景 记得在初学qml时,就被大佬告知Qml的实现有两种方式“view+item”和“engine+widow”,那么能不能将QWidget嵌入到QML中来呢,我收到的答案是不可以,原因是QML的 ...

  5. QDialog QMainwindow QWidget QFrame不同时候用法.

    继承关系:在Qt中所有的类都有一个共同的基类QObject ,QWidget直接继承与QPaintDevice类,QDialog.QMainWindow.QFrame直接继承QWidget 类.   ...

  6. MainWindow、QWidget和QDialog的区别和选择(转载)

    QApplication类用于管理应用程序范围内的资源,其构造函数需要main函数的argc和argv作为参数. Widget被创建时都是不可见的,widget中可容纳其他的widget. Qt中的w ...

  7. QWidget 实现 打破布局 或者 当前窗体内的 弹窗 (借助伪造实现)

    but = QtWidgets.QToolButton(Dialog2) but.setText('**') but.setAutoRaise(True) layout.addWidget(but) ...

  8. [转载] - QWidget、QMainWindow、QDialog和QFrame的区别

    继承关系:在Qt中所有的类都有一个共同的基类QObject ,QWidget直接继承与QPaintDevice类,QDialog.QMainWindow.QFrame直接继承QWidget 类.   ...

  9. QWidget 键盘事件 焦点(QApplication源码)

    在Qt中,键盘事件和QWidget的focus密不可分:一般来说,一个拥有焦点(focus)的QWidget或者grabKeyboard()的QWidget才可以接受键盘事件. 键盘事件派发给谁? 如 ...

随机推荐

  1. 重命名计算机名称导致TFS版本管理下的工作区问题的修复

    1.问题 若在本地已有工作区之后,此时修改计算机名称重启生效后,打开本地的项目解决方案,输出窗口会提示如下图: 2.解决 输入命令:tf workspaces /collection:http://1 ...

  2. A题笔记(12)

    No.1466  代码:https://code.csdn.net/snippets/192091 No.1202  代码:https://code.csdn.net/snippets/192110 ...

  3. imageWithContentsOfFile读取全路径返回的image为空的解决方法

    下载图片缓存到本地沙盒里,发现用 imageWithContentsOfFile去读取的时候,40%左右的几率会读取为空. 查找资料和文档后找到解决方法 路径:当这次的时候是/var/mobile/C ...

  4. dp方程

    1.        资源问题1 -----机器分配问题 F[I,j]:=max(f[i-1,k]+w[i,j-k]) 2.        资源问题2 ------01背包问题   F[I,j]:=ma ...

  5. 泛型集合List<T> Dictionary<K,V>

    List<T>类似于ArrayList,ArrayList的升级版. 各种方法:Sort().Max().Min().Sum()…   Dictionary<K,V>类似于Ha ...

  6. 进程显示,删除,调度 ps, top kill

    ps:查看进程的情况,显示的是某一时间进程的运行状态.ps --help top:也是查看进程的情况,动态显示进程信息! kill:杀死进程的情况, sudo kill --help 查看相关参数 c ...

  7. IDEA插件开发基础

    由于简易ORM的需要,想要做一些代码自动生成功能(通过右键菜单辅助) 半自动编写代码,故考虑需要开发IDE插件(我司现使用IDEA) 1.例子代码http://confluence.jetbrains ...

  8. nginx服务器的日志太多:定期执行脚本删除

    #!/bin/bash -type f -name *.log | xargs rm -f 脚本名字autodellog.sh 设置定时器(每天凌晨一点执行) [root@localhost ~]# ...

  9. js与uri中location关系

    //获取域名host = window.location.host;host2=document.domain; //获取页面完整地址url = window.location.href; docum ...

  10. PHP设计模式之适配器模式

    将一个类的接口转换成客户希望的另一个接口,适配器模式使得原本的由于接口不兼容而不能一起工作的那些类可以一起工作.应用场景:老代码接口不适应新的接口需求,或者代码很多很乱不便于继续修改,或者使用第三方类 ...