QWidget嵌入QML窗口中
来源:互联网 发布:网络改造设备 编辑:程序博客网 时间:2024/06/06 06:39
由于QWidget和QML窗口的渲染方式不一样,所以他们不能互相嵌入。
但有时候就是有这种需求:QML窗口需要嵌入到QWiget窗口中,或则是QWiget窗口需要嵌入到QML窗口中。
这个时候该怎么办呢?
我这里先记录如何将QWidget窗口嵌入到QML窗口中!
(原理:QML窗口其实是QWindow窗口,为了互通,需要把QWidget转换为QWindow)
先用Qt创建一个非常简单的QWiget窗口,界面如下:
我把这个界面类叫做Form类。
然后我们再创建一个QML文件,代码如下:
Window{ id: mainWindow width: 600 height: 300 property alias titleBar: title Rectangle { id:title width: parent.width height:25 color: "gray" Text { anchors.centerIn: parent text: "title: hello widget" font.bold: true } }}
这段代码的运行结果如下:
接下来,将QWidget类型的Form对象添加到QML窗口中的空白区域:
Form fm; fm.setAttribute(Qt::WA_NativeWindow); fm.windowHandle()->create(); fm.windowHandle()->setParent(mainWindow); fm.show(); fm.move(0,25);
我们为Form创建了一个QWindow对象,并且把父窗口设置成了QML窗口,然后将窗口坐标设置成了(0,25)<因为标题栏高25px,如果不这样那么Form会挡住标题栏>
运行之后的效果如图:
这样就完成了QWiget到QML窗口的添加,但我们发现QWidget的没有和QML窗口尺寸相适应,
这个问题我们只需要重载Form的eventFilter函数,并且调用QML窗口的installEventFilter(Form*)然后在里面处理resize事件就好了!
以上就是QWidget嵌入QML窗口的示例!
阅读全文
0 0
- QWidget嵌入QML窗口中
- QML嵌入到QWidget中方法
- Ogre窗口嵌入QWidget
- QWidget中嵌入win32 window
- 在QGraphicsScene中嵌入QWidget
- SDL2嵌入到Qwidget中
- 在Qt 5.3中嵌入自定义QWidget
- Qt实用技巧:在Qt Gui程序中嵌入qml界面(可动态覆盖整个窗口)
- QT:子窗口嵌入到父窗口,子窗口跟随父窗口 qdialog,qwidget
- QT:子窗口嵌入到父窗口,子窗口跟随父窗口 qdialog,qwidget
- QWidget中加载QML页面并设置透明背景
- 在Qt Gui中嵌入QML
- QWidget子窗口中setStyleSheet无效,解决方法
- MFC中嵌入HALCON窗口
- MFC中嵌入HALCON窗口
- MFC中嵌入HALCON窗口
- osgEarth嵌入QT的QWidget
- 窗口部件QWidget
- Android Studio项目提交GitHub时的出错处理
- 数据结构是哈希表(hashTable)
- AngularJs 解决不能设置Content-Type的方法
- 与Kotlin的第一次接触(Kotlin一)
- <基础原理进阶>机器学习算法python实现【2】--ForwardPass&BackPropagation
- QWidget嵌入QML窗口中
- 算法之插入排序
- 图像处理之_卡尔曼滤波
- BOMStreamWithFileAndSys
- ViewPager+Fragment的实现及禁止滑动
- c++作业6
- 【LeetCode】Word Pattern 解题报告
- spring注解 @Autowired @Qualifier @Resource
- 算法之冒泡排序