Qt 4.8.4 QWS服务器以编程方式设置多个客户端应用程序的焦点

时间:2013-06-04 20:24:46

标签: linux qt qtembedded

我理解(How does windowing work in qt embedded?)您应该将一个应用程序作为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 ()

返回QWSWindows列表,但我不知道如何将其中一个窗口作为当前活动窗口。我怎样才能做到这一点?谢谢 -

2 个答案:

答案 0 :(得分:2)

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

QWSWindow提供了未记录的raise()方法。请参阅:QWSWindow的{​​{3}}定义。如果你想制作任何类型的窗口管理器,你需要这种类型的功能。

在某些情况下,

无证件可能无法击败。

如果您希望让非Qt应用程序具有焦点等,那将更加复杂和困难。

答案 1 :(得分:1)

如果您尝试使用QWSServer::clientWindows ()进行操作,请忘掉它。 QWSWindowQWSClient只是提供接口以获取有关客户端窗口的信息。您无法从服务器应用程序控制它们。

有两种方法可以做你想做的事:

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