2015-10-20 68 views
3

我需要創建窗口,它始終保持在沒有邊框和控件的頂部。所以我這樣做:當使用Qt :: X11BypassWindowManagerHint標誌時,窗口沒有得到重點標記

MainWindow window; 
window.show(); 

凡MainWindow類看起來是這樣的:

MainWindow::MainWindow(QWidget *parent) : QWidget(parent, 
Qt::Window | Qt::WindowStaysOnTopHint 
| Qt::X11BypassWindowManagerHint | Qt::FramelessWindowHint) { 

} 

void MainWindow::keyPressEvent(QKeyEvent *event){ 
    if(event->key() == Qt::Key_Escape){ 
     QApplication::exit(); 
    } else 
     QWidget::keyPressEvent(event); 
} 

其中一期工程,但不完全。程序啓動後,窗口沒有焦點,所以你必須先點擊它。如果我刪除Qt::X11BypassWindowManagerHint,窗口獲得焦點,但它不會顯示在所有工作區(桌面)。

問題1:Qt::X11BypassWindowManagerHint實際上做了什麼?

問題2:我該如何得到這個工作?

回答

5

所以我設法挖掘了文檔。

問題1:Qt::X11BypassWindowManagerHint結果窗口沒有邊界,並且根本沒有來自窗口管理器的控制(僅在X11!)。

問題2:要獲得焦點並啓用鍵盤輸入,必須致電QWidget::activateWindow()

相關問題