我有一个自定义QWidget,我不希望它显示在任务栏中。我有一个QSystemTrayIcon用于管理退出/最小化等操作。
我认为您需要的是某种父占位符小部件。如果您创建小部件而没有父级,则它被视为顶级窗口。但是,如果您将其创建为顶级窗口的子级,则它被视为子窗口,并且不会获得任务栏条目。另一方面,父窗口也不会获得任务栏条目,因为您从未设置它可见:这里的代码对我有效:
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();
}
如果这是你打算的,那么任务栏中没有显示任何条目。
只需为小部件设置Qt :: SubWindow标志。
Qt :: Dialog | Qt :: Tool
和Qt :: CustomizeWindowHint
来实现这一点,但我的窗口也没有完全装饰。如果您尝试操作,请记住应用程序的退出策略。关闭/隐藏最后一个顶级窗口通常会退出应用程序,因此您可能需要调用QApplication :: setQuitOnLastWindowClosed(false)
以防止这种情况发生...Qt::Tool
是一个相关的标志,可以防止任务栏显示。 - ens使用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()