Подтвердить что ты не робот

Qt Скрыть панель задач

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

4b9b3361

Ответ 1

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

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

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

Ответ 2

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

Ответ 3

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

Ответ 4

Код 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()