通过QProcess类实现对外部应用程序是否已经启动的判断、启动和关闭。
通过QProcess类执行cmd命令(tasklist),获取当前的进程列表,然后根据指定的进程名和返回的结果进行比对,从而判断进程是否在运行
Qt在windows下实际上是通过QProcess对象启动windows自带的tasklist程序来读取正在系统中运行的所有程序的信息(其中包括了程序名等等),
然后通过比较读取出来的所有信息中是否包含有我们想要判断的程序的程序名来实现的,如下代码中,,在start函数的第一个参数是应用程序名,第二个参数是参数一程序启动时输入的启动参数,/FI表示利用其后的条件筛选出所有符合条件的进程信息。
您好,QT的权限ID传递是一个比较复杂的过程,需要您了解QT的权限系统,以及如何使用它来传递权限ID。首先,您需要在QT的权限系统中定义一个权限ID,这个权限ID可以是任何字符串,但是一般情况下,您可以使用一个GUID(全局唯一标识符)来定义权限ID。然后,您需要将这个权限ID添加到QT的权限系统中,这样就可以使用这个权限ID来控制用户的访问权限。最后,您可以使用QT的API来传递这个权限ID,以便在不同的应用程序之间传递权限ID。总之,QT的权限ID传递是一个比较复杂的过程,需要您了解QT的权限系统,以及如何使用它来传递权限ID。
Dialog,是不是Widget的子窗口,要看你构造函数是否指定了如this这样的父窗口,或者setParent()如果是的话,parentWidget ()可以获得QWidget的指针,但是你自己的对象(Widget)需要做一个做个类型的强制转化不知道你说的parentWidget ()没有成功是什
Qt 实现进程间窗口嵌套
环境:Qt 591_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 windowsh头文件),HWND类型和Qt中的WId类型可以转换,所以通过FindWindow我们可以找到想要嵌入的窗口,不论是子窗口还是主窗口,即使是整个桌面也未尝不可。
下面贴一下效果图:
原程序:
这是嵌入之后的Qt程序:
可以看到,在这里标题栏和边框都消失了。很有意思的方法,好奇Qt是如何做到这种进程间的嵌套,这篇只是简单介绍,待我研究透彻再来给大家分享。
如果不需要嵌套窗口的话,Qt也提供了其他的方法,不需要如此复杂。像QDesktopServices类,可以打开本地应用程序(打开文件或网页时,自动选择默认的应用程序)。
一开始的目的,是想将office窗口显示到qt程序里面,采用的是activexQt模块,但activex的开发需要一定时间的积累,微软的东西比较难用,加上activex只能打开微软自家的东西(有待验证),而且如果以后不仅仅是显示office呢?所以干脆直接嵌套进程窗口,一劳永逸。
1、通过调用Linux C 函数
system("calcexe");
2、通过QProcess 阻塞调用
QProcess::execute("calcexe");/QProcess::startDetached("calcexe");
3、通过QProcess,非阻塞调用
QProcess pro = new QProcess;
pro->start("calcexe");
注释:
1、前两种方法会阻塞进程,直到计算器程序结束,而第三种方法则不会阻塞进程,可以多任务运行。
2、QT在运行的时候,要启动qws服务,如果用前两种方法,运行的时候,要新开启一个qws,否则不能运行;而第三种方法,则不需要在开启qws,他和主进程公用一个qws。
3、第三种虽然不会阻塞,但是有可能在终端上看不到打印出来的信息。所以要在终端显示信息,可以考虑阻塞模式。
先创建一个QWidget对象。
1、在Qt程序中创建一个QWidget对象,并调用其show()函数以显示窗口。
2、调用QWidget对象的winId()函数获取窗口句柄(即窗口ID号)。
3、使用XOpenDisplay()函数打开与XServer的连接。
4、使用XCreateSimpleWindow()函数创建一个XWindow,并设置其属性和事件响应函数等。
5、使用XMapWindow()函数将新创建的窗口映射到屏幕上。
6、使用XFlush()函数刷新缓冲区并发送请求给XServer。
以上就是关于qt怎么查看当前正在执行的代码全部的内容,包括:qt怎么查看当前正在执行的代码、qt的权限id如何传递、如何使用QT的winId函数返回的窗口句柄实现绘图之类的 *** 作等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)