3

我了解(如何在 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 列表,但我不知道如何使其中一个窗口成为当前活动窗口。我怎样才能做到这一点?谢谢 -

4

2 回答 2

2

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

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

在某些情况下,无证可以击败不可能。

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

于 2014-01-14T15:02:47.503 回答
1

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

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

  • 从创建窗口的应用程序中执行
  • 使用QWSEmbedWidget嵌入客户端窗口,然后您可以获得某种控制
于 2014-01-31T13:15:13.570 回答