a408815041 发表于 2013-5-20 19:41:41

QProcess启动起来的界面怎么设置成子窗口

如题。
我本来想实现一个功能:
我把我的主程序设置成 显示到最前端(主要是防止其他程序出现),
但是程序中会启动其他程序,怎么把启动起来的这个程序作为我的子窗口,这样就可以显示出来了……

或者有没好的方法实现我这个功能。

yafeilinux 发表于 2013-5-20 19:41:42

a408815041 发表于 2013-5-21 17:49 static/image/common/back.gif
不是子窗口,只是启动其他程序,如果是子窗口的话,才有可能在他前面显示 ...

我知道你的意思,我的意思是说,比如下面的代码:   
MainWindow w;

QProcess pro;
pro.start("notepad.exe");

w.show();

那么记事本一定是在W窗口前面显示的;

但是如果这样:
    MainWindow w;
    w.setWindowFlags(Qt::WindowStaysOnTopHint);

    QProcess pro;
    pro.start("notepad.exe");

   w.show();
这里将w窗口设置为了顶层窗口,那么记事本不可能在W前面显示。

yafeilinux 发表于 2013-5-20 20:54:34

如果你启动的那个也是Qt写的程序,好像还有办法,如果是其他程序,不太好实现吧。

Joey_Chan 发表于 2013-5-20 23:03:16

如果是在linux下的话可以通过dbus实现,其它我就不会了

a408815041 发表于 2013-5-21 10:53:48

yafeilinux 发表于 2013-5-20 20:54 static/image/common/back.gif
如果你启动的那个也是Qt写的程序,好像还有办法,如果是其他程序,不太好实现吧。 ...

有C#、VC写的,肿么办………………

yafeilinux 发表于 2013-5-21 10:58:23

a408815041 发表于 2013-5-21 10:53 static/image/common/back.gif
有C#、VC写的,肿么办………………

这个应该没有什么好办法吧,如果你把主程序设置为顶层窗口,那么他调用的程序,不是显示在它上面吗?如果不是,那只能改主程序的位置了。

a408815041 发表于 2013-5-21 17:49:00

yafeilinux 发表于 2013-5-21 10:58 static/image/common/back.gif
这个应该没有什么好办法吧,如果你把主程序设置为顶层窗口,那么他调用的程序,不是显示在它上面吗?如果 ...

不是子窗口,只是启动其他程序,如果是子窗口的话,才有可能在他前面显示

a408815041 发表于 2013-5-22 11:02:36

yafeilinux 发表于 2013-5-21 19:41 static/image/common/back.gif
我知道你的意思,我的意思是说,比如下面的代码:   
MainWindow w;



我想问下,如果我在启动的时候,我把这个标志位取消,然后等这个进程结束后,我在把这个标志位 加上,
这样应该可以吧,那怎么检查这进程是否结束?难道用
while(1)
pro.finished();
去判断?

yafeilinux 发表于 2013-5-22 13:16:40

a408815041 发表于 2013-5-22 11:02 static/image/common/back.gif
我想问下,如果我在启动的时候,我把这个标志位取消,然后等这个进程结束后,我在把这个标志位 加上,
这 ...

进程结束的时候会发射finished(int)信号!

a408815041 发表于 2013-5-22 13:48:12

yafeilinux 发表于 2013-5-22 13:16 static/image/common/back.gif
进程结束的时候会发射finished(int)信号!

我意思就是 可以这样 做对吧……

yafeilinux 发表于 2013-5-22 17:51:58

a408815041 发表于 2013-5-22 13:48 static/image/common/back.gif
我意思就是 可以这样 做对吧……

你可以试一下啊!看是否能达到想要的效果。

crazylq 发表于 2014-11-11 17:33:55

哪将弹出的记事本阻塞到当前窗口怎么实现啊?就是只能操作当前弹出的界面,你的主界面是动不了的?

a408815041 发表于 2014-11-12 11:39:35

crazylq 发表于 2014-11-11 17:33 http://www.qter.org/static/image/common/back.gif
哪将弹出的记事本阻塞到当前窗口怎么实现啊?就是只能操作当前弹出的界面,你的主界面是动不了的? ...

pro : LIBS += -luser32
#include <Windows.h>
备注:好像只能在QMainWindow类下面操作,我在QWidget下未成功。
QString Name = "notepad";
HWND SimpackWnd = FindWindow((LPCTSTR)Name.unicode(),NULL);
if(SimpackWnd != NULL)
{ SetParent(SimpackWnd,(HWND)(this->winId())); }

可以吧记事本嵌入到界面里面去。我测试环境是在win7下,测试成功了。
你在写这段代码的时候,必须先把记事本打开。
页: [1]
查看完整版本: QProcess启动起来的界面怎么设置成子窗口