У меня есть пользовательский QWidget, и я просто не хочу, чтобы он отображался на панели задач. У меня есть QSystemTrayIcon для управления выходом/минимизацией и т.д.
Qt Скрыть панель задач
Ответ 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()