创建一个即使在全屏模式下也能保持最佳状态的新窗口(Linux上的Qt)

时间:2010-05-13 14:25:06

标签: c++ linux qt

我在嵌入式目标上使用Qt 4.6.3和ubuntu linux。我打电话给

dlg->setWindowState(Qt::WindowFullScreen);
在我的应用程序窗口上的

(所以我不会将触摸屏上的任何空间丢失到屏幕顶部和底部的任务栏和状态面板。这一切都正常并且符合预期。问题来了当我想弹出屏幕键盘以允许用户输入一些数据时。我使用

m_keyProc= new QProcess();
m_keyProc->start("onboard -s 640x120");

这会弹出键盘,但它位于全屏窗口的后面。 onbaord键盘首选项被设置为总是在顶部,但这似乎实际上意味着“除了全屏幕窗口”。我想这很有意义,可能会遇到大多数用例,但我需要它才能真正处于最佳状态。

我可以A)不是全屏模式(所以键盘工作)并以编程方式隐藏任务栏?或者B)尽管我的全屏状态,强制键盘在顶部?

注意:在Windows上我们调用

m_keyProc->start("C:\\Windows\\system32\\osk.exe");

尽管全屏状态,但osk键盘仍在顶部。所以,我猜这是不同操作系统中窗口管理器的不同之处。那么我需要在linux窗口管理器的窗口上设置一些标志吗?

1 个答案:

答案 0 :(得分:1)

Qt似乎没有办法将其他非Qt流程带到前面。您可能需要通过调用QProcess::pid()从QProcess获取本机平台进程ID,并调用底层OS API来执行此操作。