Qt Скрыть элемент панели задач - PullRequest
22 голосов
/ 30 октября 2010

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

Ответы [ 4 ]

22 голосов
/ 30 октября 2010

Я думаю, что единственное, что вам здесь нужно, это какой-то родительский виджет-заполнитель. Если вы создаете свой виджет без родителя, он считается окном верхнего уровня. Но если вы создаете его как дочерний элемент окна верхнего уровня, он считается дочерним и не получает запись панели задач как таковую. Родительское окно, с другой стороны, также не получает запись панели задач, потому что вы никогда не устанавливаете ее видимой: этот код здесь работает для меня:

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();
}

Запись панели задач никогда не отображается, если вы хотите, чтобы вы хотели.

6 голосов
/ 30 октября 2010

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

4 голосов
/ 02 декабря 2015

Просто установите флаг Qt :: SubWindow для виджета.

0 голосов
/ 14 июня 2015

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()
...