QT: 最小化窗口到托盘图标

加入 setWindowFlags(Qt::Tool); 这条代码可以解决这两个问题,

1、窗口下方任务栏中无程序图标显示

2、当只有一个窗口的时候且创建了托盘图标的时候,使用hide()隐藏窗口不会让程序直接退出。

 

托盘详细操作请进入这篇文章:https://blog.csdn.net/qq_41768362/article/details/110901154

 

效果图:

 

Widget示例代码

#include "widget.h"
#include "ui_widget.h"
#include <QDebug>
#include <QPushButton>
#include <QSystemTrayIcon>
#include <QMenu>
#include <QAction>

Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);

    QPushButton* hideBtn = new QPushButton(QStringLiteral("隐藏窗口"),this);
    connect(hideBtn, &QPushButton::clicked, [&]()
    {
        this->hide();
    });

    setWindowFlags(Qt::Tool);
    CreateSystemTrayIcon();    //创建托盘
}

Widget::~Widget()
{
    delete ui;
}

void Widget::CreateSystemTrayIcon()
{
    //初始化两个项目
    QAction* showAction = new QAction(QStringLiteral("显示"));//项1
    QAction* exitAction = new QAction(QStringLiteral("退出"));//项2
    //项1的点击槽函数
    connect(showAction, &QAction::triggered, this, [=]()
    {
        this->show();
    });
    //项2的点击槽函数
    connect(exitAction , &QAction::triggered, this, [=]()
    {
        qDebug()<<"exit";
        QApplication::exit(0);
    });

    //初始化菜单并添加项
    QMenu* trayMenu = new QMenu(this);//菜单
    trayMenu->addAction(showAction);
    trayMenu->addAction(exitAction );

    //创建一个系统托盘
    QSystemTrayIcon* trayIcon = new QSystemTrayIcon(this);
    trayIcon->setIcon(QIcon("C:\\Users\\admin\\Downloads\\server.ico"));    //设置托盘图标
    trayIcon->setContextMenu(trayMenu);                                     //设置菜单
    trayIcon->show();
}

 

  • 2
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Qt 为我们提供了一种简单的方法,可以在应用程序启动时将其最小化到系统托盘中。 首先,我们需要在项目中包含 `<QSystemTrayIcon>` 头文件。接下来,在创建 `QApplication` 实例之前,我们可以设置一个标志位以指示应用程序将被最小化托盘。 例如,我们可以在 `main.cpp` 文件中添加以下代码: ```c++ #include <QApplication> #include <QSystemTrayIcon> int main(int argc, char *argv[]) { QApplication a(argc, argv); // 设置标志位以指示应用程序将被最小化托盘 bool startMinimizedToTray = true; // 创建托盘图标 QSystemTrayIcon *trayIcon = new QSystemTrayIcon(QIcon("icon.png")); // 将应用程序最小化到系统托盘中 if (startMinimizedToTray) { a.setWindowIcon(QIcon("icon.png")); trayIcon->show(); } // 其他应用程序逻辑 return a.exec(); } ``` 在上述代码中,我们首先设置了一个 `startMinimizedToTray` 标志位,用于指示应用程序是否将被最小化托盘。然后,我们创建了一个 `QSystemTrayIcon` 对象并设置了一个应用程序图标(在此例中,我们假设有一个名为 "icon.png" 的图标文件)。最后,如果 `startMinimizedToTray` 标志位为真,则将应用程序的图标显示在系统托盘中。 这样,当我们运行应用程序时,它将首先在系统托盘显示图标,而不是在任务栏中。用户可以通过单击托盘图标来恢复应用程序的正常窗口。 ### 回答2: Qt是一个跨平台的应用程序框架,可以用于开发图形用户界面(GUI)程序。启动最小化托盘是一种常见的功能,允许程序在启动时最小化到任务栏的系统托盘区域。 要实现这个功能,首先需要引入QSystemTrayIcon类,这个类提供了操作系统托盘的接口。然后在程序的主窗口中创建一个QSystemTrayIcon对象。 接下来,可以使用hide()函数将主窗口隐藏,并使用showMinimized()函数将窗口最小化。然后,调用setContextMenu()函数,为托盘图标设置一个菜单,可以在用户右键单击托盘图标显示。菜单可以包含恢复窗口、退出程序等选项。 在程序的槽函数中,可以监听相关的事件,如托盘图标被双击、菜单项被点击等。当用户双击托盘图标时,可以调用showNormal()函数将窗口恢复正常显示。当用户选择退出程序时,可以调用QApplication的quit()函数退出程序。其他的一些槽函数可以根据需要来定义。 最后,在程序的main函数中实例化QApplication对象,并将程序的主窗口作为参数传递给QSystemTrayIcon的构造函数。然后,调用show()函数显示窗口。 通过以上的步骤,程序在启动时会先最小化到系统托盘区域,用户可以通过托盘图标进行操作。这样做的好处是不会占用用户的任务栏空间,而且用户可以随时将窗口恢复显示,方便快捷。 ### 回答3: 要在Qt中实现将应用程序启动最小化到系统托盘,可以按照以下步骤进行操作: 1. 首先,需要在应用程序中添加`QSystemTrayIcon`类的实例,该类提供了访问系统托盘图标的功能。可以在应用程序的主窗口类中添加一个成员变量来保存`QSystemTrayIcon`对象。 2. 创建一个菜单,用于点击托盘图标显示的菜单项。可以使用`QMenu`和`QAction`类来创建并添加菜单项。 3. 接下来,在应用程序的`main()`函数中,需要检查当前操作系统是否支持系统托盘功能。如果不支持,则不进行后续操作。 4. 当应用程序窗口关闭时,需要将其最小化到系统托盘。可以通过重写应用程序类的`closeEvent()`函数来实现。在该函数中,需要将主窗口隐藏,并设置`QSystemTrayIcon`对象的图标和菜单。 5. 最后,在`QSystemTrayIcon`的槽函数中处理托盘图标的点击事件。可以根据具体需求来实现不同的功能,比如恢复应用程序窗口、退出应用程序等。 需要注意的是,启动最小化到系统托盘功能在不同平台上的实现方式可能有所不同。因此,在进行具体实现时,需要根据目标平台和Qt版本选择适当的方法和事件。 以上是实现在Qt中将应用程序启动最小化到系统托盘的一般步骤。具体的实现方式还需要根据应用程序的具体需求和平台特性进行调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值