2010-10-29 4 views
19

У меня есть пользовательский QWidget, и я просто не хочу, чтобы он отображался на панели задач. У меня есть QSystemTrayIcon для управления выходом/минимизацией и т. Д.Qt Hide Taskbar Item

ответ

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

Я столкнулся с этим с одним из приложений, и после прочтения я понял, что кто-то совершил создание объекта с этим объектом. Это была ошибка для меня. Я удалил «это», и приложение отлично работало, т. Е. Запись панели задач возвращается. Спасибо вам. – Yash

5

Если вы хотите показать/скрыть виджет, не отображая его на панели задач, вы можете проверить флаги этого виджета. Я не уверен на 100%, но я думаю, что использовал Qt::Dialog | Qt::Tool и Qt::CustomizeWindowHint для этого, но мое окно тоже не было полностью украшено. Другое дело, что вы можете иметь в виду, если вы играете с этим, это политика выхода вашего приложения. Закрытие/Скрытие последнего верхнего окна обычно выйдет из приложения, поэтому, возможно, вам нужно позвонить QApplication::setQuitOnLastWindowClosed(false), чтобы предотвратить это ...

+1

'Qt :: Tool' - соответствующий флаг, который предотвращает запись в панели задач. – ens

+0

может предоставить пример кода. – GeneCode

+0

Nvm получил это: this-> setWindowFlags (Qt :: tool); – GeneCode

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 :: SubWindow флаг для виджета.

+0

Это, безусловно, самый простой ответ. Работает для меня с Qt5. – TheSHEEEP

+0

Это хорошее решение, если у вашего окна нет рамки. Если да, то у вас не будут кнопки по умолчанию для окон (закрыть, максимизировать, свернуть). – Szpaqn

+0

Где я могу поместить этот код? Можете ли вы привести более подробный пример? – GeneCode

Смежные вопросы