Qt 实现进程间窗口嵌套(一)
来源:互联网 发布:网络名字大全女孩霸气 编辑:程序博客网 时间:2024/06/05 20:13
环境:Qt 5.9.1_msvc2015_64bit,Window 10.
为了实现在qt程序中打开Window上其他应用程序,并将其嵌入到qt程序中。
方法:获取外部程序的窗口句柄,调用
[static]QWindow *QWindow::fromWinId(WIdid)
函数创建QWindow,然后调用
[static]QWidget *QWidget::createWindowContainer(QWindow *window,QWidget *parent = Q_NULLPTR,Qt::WindowFlagsflags = Qt::WindowFlags())
创建一个QWidget即可。
关键之处在于如何获取窗口句柄。
我们都知道Windows编程中,可以通过FindWindow系列的函数获取HWND类型的窗口句柄(需要include windows.h头文件),HWND类型和Qt中的WId类型可以转换,所以通过FindWindow我们可以找到想要嵌入的窗口,不论是子窗口还是主窗口,即使是整个桌面也未尝不可。
下面贴一下效果图:
原程序:
这是嵌入之后的Qt程序:
可以看到,在这里标题栏和边框都消失了。很有意思的方法,好奇Qt是如何做到这种进程间的嵌套,这篇只是简单介绍,待我研究透彻再来给大家分享。
如果不需要嵌套窗口的话,Qt也提供了其他的方法,不需要如此复杂。像QDesktopServices类,可以打开本地应用程序(打开文件或网页时,自动选择默认的应用程序)。
一开始的目的,是想将office窗口显示到qt程序里面,采用的是activexQt模块,但activex的开发需要一定时间的积累,微软的东西比较难用,加上activex只能打开微软自家的东西(有待验证),而且如果以后不仅仅是显示office呢?所以干脆直接嵌套进程窗口,一劳永逸。
参考链接:http://blog.csdn.net/dazhong159/article/details/7903382 -如何获取window窗口句柄
- Qt 实现进程间窗口嵌套(一)
- 转:QT实现阴影窗口(一)
- Qt之主窗口(一)
- Qt实现窗口间数据交换
- 转:QT实现阴影窗口(二)
- 转:QT实现阴影窗口(三)
- Qt 登录窗口实现
- Qt实现窗口拖动
- qt实现异形窗口
- qt 实现窗口拉伸
- QT实现窗口跳转
- QT实现伸缩窗口
- 进程间消息通信实现窗口控制
- qt登陆窗口到主界面(一)
- Qt里的堆栈窗口的使用(系列一)
- QT主窗口的停靠窗口实现
- QT主窗口的停靠窗口实现
- Qt实现子窗口内嵌到主窗口内部
- php中引用&的真正理解-变量引用、函数引用、对象引用
- Python3:《机器学习实战》之支持向量机(3)完整版SMO
- Linux系统文件权限
- 启程
- Android studio 中NDK的配置和JNI实现的完整过程SerialPort android串口
- Qt 实现进程间窗口嵌套(一)
- Java工具之javac---javadoc--javah--jar
- 简单搭建一个Mybatis
- JavaScript(下)-课堂笔记
- 新浪网页爬虫
- 试说明PCB(进程控制块) 的作用,为什么说PCB 是进程存在的惟一标志?
- 牛客网--用两个栈实现队列
- 《零基础入门深度学习》系列文章(教程+代码)
- MATLAB绘制直方图