Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux Qt 4.8.4 QWS Server通过编程方式使用多个客户端应用程序设置焦点_Linux_Qt_Qtembedded - Fatal编程技术网

Linux Qt 4.8.4 QWS Server通过编程方式使用多个客户端应用程序设置焦点

Linux Qt 4.8.4 QWS Server通过编程方式使用多个客户端应用程序设置焦点,linux,qt,qtembedded,Linux,Qt,Qtembedded,我理解()您应该运行一个应用程序作为QWS服务器来提供窗口管理功能,但是您也可以在Qt Embedded for Linux中运行其他具有图形界面的应用程序 我想通过编程在窗口之间切换焦点,而不需要鼠标/键盘交互来实现焦点。我已经搜索了以下文档,但没有找到任何使不同窗口“活动”的方法: http://qt-project.org/doc/qt-4.8/qwsserver.html http://qt-project.org/doc/qt-4.8/qapplication.html http://

我理解()您应该运行一个应用程序作为QWS服务器来提供窗口管理功能,但是您也可以在Qt Embedded for Linux中运行其他具有图形界面的应用程序

我想通过编程在窗口之间切换焦点,而不需要鼠标/键盘交互来实现焦点。我已经搜索了以下文档,但没有找到任何使不同窗口“活动”的方法:

http://qt-project.org/doc/qt-4.8/qwsserver.html
http://qt-project.org/doc/qt-4.8/qapplication.html
http://qt-project.org/doc/qt-4.8/qsessionmanager.html#details
http://qt-project.org/doc/qt-4.8/qwswindow.html
QWSServer有一个方法:

const QList<QWSWindow *> & QWSServer::clientWindows ()
const-QList&QWSServer::clientWindows()

它返回一个QWSWindows列表,但我不知道如何使其中一个窗口成为当前活动窗口。我该怎么做?谢谢-

从某种意义上说,被接受的答案是错误的。我认为解决方案是通过clientWindows找到所需的窗口,然后调用
QWSWindow::setActiveWindow()
,然后调用
QWSWindow::raise()

QWSWindow
提供未记录的
raise()
方法。请参阅:定义
QWSWindow
。如果要创建任何类型的窗口管理器,都需要这种类型的功能

在某些情况下,无文件记录可以击败不可能


如果您希望让非Qt应用程序拥有焦点,那么它就更加复杂和困难。

如果您试图使用
QWSServer::clientWindows()
来实现这一点,那么请忘记它
QWSWindow
QWSClient
只是提供了获取客户机窗口信息的接口。您无法从服务器应用程序控制它们

有两种方法可以满足您的需求:

  • 从创建窗口的应用程序执行此操作
  • 使用嵌入客户端窗口,然后获得某种控制

我自己从未找到解决方案。祝你好运-如果你的解决方案有效,请在这里告诉我。qt embeddedYes中没有这样的类。是的,有这样一个方法,如
QWSWindow::raise()
。我更新了答案以提供到源代码的链接。我已经用它来做OP要求的事情了。唯一的问题是您是否要使用未记录的功能。然而,由于QWS在Qt5中被弃用,我不明白为什么会有人不这样做。整个QWS是一个死气沉沉的基础设施。