【发布时间】:2011-05-02 14:44:48
【问题描述】:
我有一个自定义 QWidget,我不想让它出现在任务栏中。我有一个 QSystemTrayIcon 用于管理退出/最小化等。
【问题讨论】:
我有一个自定义 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();
}
如果这是您想要的,则不会显示任何任务栏条目。
【讨论】:
this 并且应用程序运行良好,即任务栏条目又回来了。谢谢你。
只需为小部件设置 Qt::SubWindow 标志。
【讨论】:
如果您想显示/隐藏小部件而不在任务栏上显示它,您可以检查该小部件的窗口标志。我不是 100% 确定,但我想我用过Qt::Dialog | Qt::Tool 和 Qt::CustomizeWindowHint 来实现这一点,但我的窗户也没有完全装饰。如果您使用它,您可能要记住的另一件事是应用程序的退出策略。关闭/隐藏最后一个顶层窗口通常会退出您的应用程序,因此您可能需要调用 QApplication::setQuitOnLastWindowClosed(false) 来防止这种情况...
【讨论】:
Qt::Tool 是阻止进入任务栏的相关标志。
实现此目的的 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()
【讨论】: