void MainWindow::on_actionAlways_on_Top_triggered(bool checked)
{
Qt::WindowFlags flags = this->windowFlags();
if (checked)
{
this->setWindowFlags(flags | Qt::CustomizeWindowHint | Qt::WindowStaysOnTopHint);
this->show();
}
else
{
this->setWindowFlags(flags^(Qt::CustomizeWindowHint | Qt::WindowStaysOnTopHint));
this->show();
}
}
上述解決方案的工作原理,但因爲setWindowFlags隱藏窗口,它需要重新顯示,當然,看起來不是很優雅。那麼如何在沒有「閃爍」副作用的情況下爲QMainWindow切換「永遠在最前面」?如何在Qt中爲QMainWindow切換'always on top'而不會導致閃爍或閃爍?
+1:對於好 「解決方法」 的想法;) – ereOn 2010-05-18 09:46:35
對於「始終在上」功能,這必須是可能的。大量的應用程序沒有閃爍;也許我只需要使用一些本地Windows功能? – 2010-05-18 09:47:26
如果您想要在Qt實現之下(或摧毀窗口並重新創建它),那麼可能會出現這種情況。但至少有一些是「Window Class」IIRC的屬性,而不是HWND;並且您可能無法在創建後更改窗口的類。無論哪種方式,我認爲在不打破Qt抽象層的情況下提出可以接受的答案的價值要好於在Win32黑客中陷入困境。這就是Qt的喜悅... – HostileFork 2010-05-18 09:58:42