Qt隐藏任务栏项目

22 qt taskbar qwidget

我有一个自定义的QWidget,我很简单,不希望它出现在任务栏中.我有一个QSystemTrayIcon来管理退出/最小化等.

小智 21

我认为你在这里唯一需要的是某种父占位符小部件.如果您创建没有父级的窗口小部件,则它被视为顶级窗口.但是,如果您将其创建为顶级窗口的子级,则将其视为子窗口,并且本身不会获得任务栏条目.另一方面,父窗口也没有获得任务栏条目,因为您从未将其设置为可见:此代码适用于我:

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();
}
Run Code Online (Sandbox Code Playgroud)

如果您想要这样做,则不会显示任何条目条目.


小智 9

只需为小部件设置 Qt::SubWindow 标志。

  • 如果您的窗户没有框架,这是一个很好的解决方案。如果是这样,那么您将不会有默认的窗口按钮(关闭、最大化、最小化)。 (2认同)

小智 6

如果您想显示/隐藏窗口小部件而不在任务栏上显示它,您可能会检查该窗口小部件的窗口标志.我不是百分百肯定,但我认为我使用了Qt::Dialog| Qt::ToolQt::CustomizeWindowHint实现这一目标,但我的窗户也没有完全装饰.如果您使用它,您可能会记住的另一件事是应用程序的退出策略.关闭/隐藏最后一个顶层窗口通常会退出您的应用程序,因此您可能需要打电话QApplication::setQuitOnLastWindowClosed(false)来防止...

  • `Qt :: Tool`是阻止任务栏输入的相关标志. (2认同)
  • Nvm 得到它: this->setWindowFlags(Qt::tool); (2认同)