b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

使用QT创建系统托盘

电脑杂谈  发布时间:2020-06-01 20:20:14  来源:网络整理

qt 托盘菜单_qt 最小化到托盘_qt 托盘菜单

使用QT创建系统托盘实际上非常简单. 为什么这么说一是因为QT文档提供了更详细的示例,其二是QT具有更优雅的结构和统一的设计风格. 但是在开始之前我们从哪里开始呢?尽管QT文档提供了更详细的示例,但由于其许,它看起来更加费劲. 在这里,我们只是拉丝,剥茧,只实现系统托盘的功能.

首先,使用QT创建器创建GUI项目,无论它是从QDialog还是QMainWindow或QWidget继承而来的. 我们以继承的QMainWindow为例. 创建完成后,创建者将自动生成一些文件. 项目文件如下:

打开主文件mainwindow.h. 在类声明中添加一些必要的成员变量,如下图所示:

qt 最小化到托盘_qt 托盘菜单_qt 托盘菜单

其中: closeEvent()是父类中的虚函数. 我们在这里重写它,以在程序窗口关闭时实现某些操作. 然后声明一个类型为QSystemTrayIcon的指针,这是实现系统任务栏的主类. 然后声明四个类型为QAction的指针和一个类型为QMenu的指针,这两个指针将协作以实现系统任务栏的上下文菜单. 好吧,我们只需实现系统任务栏的功能,因此添加这些成员就足够了.

通常,我们会在系统托盘中看到一个小图标,指示该程序在后台运行. 然后,我们还添加一个小图标作为程序的系统托盘图标. 此步骤非常简单: 首先在源代码文件夹中创建一个子文件夹,例如命名图像. 然后在项目中添加资源文件. 打开此资源文件,您可以在右下角看到一个添加按钮qt 托盘菜单,单击添加前缀,如图所示:

qt 托盘菜单_qt 托盘菜单_qt 最小化到托盘

添加前缀时要小心. 默认生成的前缀是: / new / prefix1. 我们将删除以下所有文本,仅保留'/'. 这是为了简单起见. 之后,再次单击“添加”按钮,这次选择“添加文件”. 在打开的文件对话框中,我们在先前创建的图像文件夹中选择一个图标,然后单击“确定”以查看结果:

添加图标的过程到此结束.

然后转到mainwindow.cpp文件以编写实际代码. 常规和窗口组件初始化代码被放入主窗口的构造函数中,以便在创建窗口时初始化必要的组件. 在这里,我们在MainWindow类中实现. 查看代码:

qt 最小化到托盘_qt 托盘菜单_qt 托盘菜单

 1     QIcon icon(":/images/sysTray.ico");
 2     systemTray = new QSystemTrayIcon(this);
 3     systemTray->setIcon(icon);
 4     systemTray->setToolTip("Test Radio Buttons");
 5     minimumAct = new QAction("Minimum Window", this);
 6     //Note the differences between hide() and showMinimized().
 7     connect(minimumAct, SIGNAL(triggered()), this, SLOT(hide()));
 8     maximumAct = new QAction("Maximum Window", this);
 9     connect(maximumAct, SIGNAL(triggered()), this, SLOT(showMaximized()));
10     restoreAct = new QAction("Restore Window", this);
11     connect(restoreAct, SIGNAL(triggered()), this, SLOT(showNormal()));
12     quitAct = new QAction("Quit Application", this);
13     connect(quitAct, SIGNAL(triggered()), qApp, SLOT(quit()));
14     pContextMenu = new QMenu(this);
15     pContextMenu->addAction(minimumAct);
16     pContextMenu->addAction(maximumAct);
17     pContextMenu->addAction(restoreAct);
18     pContextMenu->addSeparator();
19     pContextMenu->addAction(quitAct);
20     systemTray->setContextMenu(pContextMenu);
21     systemTray->show();

我们逐行说明: 第1行使用图标的文件路径生成QIcon对象,QSystemTrayIcon的setIcon使用该对象来设置系统托盘图标. 第4行设置提示信息. 该消息何时出现?这是将鼠标放在系统任务栏图标上的时候. 通常设置为程序名称. 第5至13行设置了上下文菜单项. 总共有四个项目. 分别缩小,放大,还原窗口和推出程序. 创建每个菜单项后,我们将其触发信号连接到指定的插槽功能. 第14到20行将创建的菜单项添加到上下文菜单中以完成此操作. 第21行显示此系统托盘. 这句话很重要,不能忘记. 否则,您将在系统任务栏区域中看不到该图标.

这时,功能已基本完成,程序启动时,可以在系统托盘区域看到托盘图标. 但是,如果没有将showMessage()函数添加到上述构造函数中,则不会显示托盘气球提示. 让我们模仿程序在后台运行时的提醒效果. 然后,我们只需要重写closeEvent()事件. 编写代码如下:

    if(systemTray->isVisible())
    {
        hide();
        systemTray->showMessage("Tips", "The program is running behind!");
        event->ignore();
    }

qt 托盘菜单_qt 最小化到托盘_qt 托盘菜单

If语句首先判断纸盘的可见性. 由于我们在构造函数中调用了show()函数,因此系统托盘图标现在可见. 因此,输入if语句. 首先隐藏主窗口,然后调用QSystemTrayIcon的showMessage()函数以明确提醒托盘气球. 最后,调用ignore()函数以忽略事件,以防止事件继续传递. 效果如下:

功能完成后,再查看上下文菜单,看起来像:

至此qt 托盘菜单,简单的系统任务栏功能已完成.


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/tongxinshuyu/article-230369-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      • 刘言史
        刘言史

        现在是剩女多好吧

      • 袁方
        袁方

        幸亏市场上很多货在卖不然小米不好找借口

      • 鄢智林
        鄢智林

        后来震撼到我了

      热点图片
      拼命载入中...