2010-10-29 69 views

回答

21

我認爲你需要的唯一東西就是某種父佔位符小部件。如果您創建沒有父級的小部件,它將被視爲頂級窗口。但是,如果您將其創建爲頂級窗口的子項,則它將被視爲子窗口,並且本身不會獲取任務欄條目。父窗口,而另一方面,也不會因爲你永遠不設置明顯的得到一個任務欄條目:這裏此代碼的工作對我來說:

class MyWindowWidget : public QWidget 
{ 
public: 
    MyWindowWidget(QWidget *parent) 
     : QWidget(parent, Qt::Dialog) 
    { 

    } 
}; 

int main(int argc, char *argv[]) 
{ 
    QApplication app(argc, argv); 

    QMainWindow window; 

    MyWindowWidget widget(&window); 
    widget.show(); 

    return app.exec(); 
} 

沒有任務欄條目曾經表示,如果這是要你意。

+1

我正在面對這與一個應用程序和閱讀後,我意識到問題是有人提交一個對象創建與此對象。這對我來說是個bug。我刪除了'this',並且應用程序完美工作,即任務欄條目返回。謝謝。 – Yash 2016-04-06 13:47:03

5

如果要顯示/隱藏小部件,而不在任務欄上顯示它,可以檢查該小部件的窗口標誌。我不是100%肯定的,但我想我用過Qt::Dialog | Qt::ToolQt::CustomizeWindowHint來達到這個目的,但是我的窗戶也沒有完全裝飾。另一件你可能會記住的事情是你的應用程序退出策略。關閉/隱藏最後的頂級窗口通常會退出你的應用程序,所以也許你需要撥打QApplication::setQuitOnLastWindowClosed(false)來防止...

+1

'Qt :: Tool'是防止任務欄條目的相關標誌。 – ens 2015-11-08 19:04:02

+0

你可以給出示例代碼。 – GeneCode 2017-09-18 01:11:59

+0

Nvm明白了:this-> setWindowFlags(Qt :: tool); – GeneCode 2017-09-18 01:14:11

0

Python代碼實現這一目標:

from PyQt5.QtCore import * 
from PyQt5.QtWidgets import * 

class MainWindow(QWidget): 
    def __init__(self, parent=None): 
     super(MainWindow, self).__init__(parent, Qt.Tool) 

window = MainWindow() 
window.show() 
3

剛剛成立的Qt ::子窗口標誌部件。

+0

這絕對是最簡單的答案。適用於Qt5。 – TheSHEEEP 2017-02-21 08:12:32

+0

如果你的窗口沒有框架,這是一個很好的解決方案。如果是這樣,那麼你不會有默認的窗口按鈕(關閉,最大化,最小化)。 – Szpaqn 2017-08-18 14:00:22

+0

我在哪裏放這個代碼?你能舉出更詳細的例子嗎? – GeneCode 2017-09-18 01:03:15