wordpress   发布时间:2022-04-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Windows – 当应用程序失去焦点时,Qt系统托盘上下文菜单仍然存在大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

我为我的应用程序设置了一个系统托盘图标,并附加了一个简单的上下文菜单.如果我右键单击该图标以显示上下文菜单,它可以正常工作.如果我然后单击失去应用程序焦点的某个地方(例如,任务栏上的其他位置或其他应用程序),则不会删除上下文菜单,并且在单击时仍会触发正确的操作.但是,如果我单击主应用程序,则上下文菜单会按预期消失. 以下是创建托盘图标和上下文菜单的相关代码 – actionExit = new Q
我为我的应用程序设置了一个系统托盘图标,并附加了一个简单的上下文菜单.如果我右键单击该图标以显示上下文菜单,它可以正常工作.如果我然后单击失去应用程序焦点的某个地方(例如,任务栏上的其他位置或其他应用程序),则不会删除上下文菜单,并且在单击时仍会触发正确的操作.但是,如果我单击主应用程序,则上下文菜单会按预期消失.

以下是创建托盘图标和上下文菜单的相关代码

actionExit = new QAction( "Exit",this );
connect( actionExit,SIGNAL( triggered() ),this,SLOT( ExitClient() ));

myTrayIconMenu = new QMenu( this );
myTrayIconMenu->addAction( actionExit );

trayIcon = new QSystemTrayIcon( icon,this );
trayIcon->setContextMenu( myTrayIconMenu );
connect( systrayIcon,SIGNAL( activated( QSystemTrayIcon::ActivationReason )),SLOT( ToggleVisibility( QSystemTrayIcon::ActivationReason )));
trayIcon->show( );

我是否需要添加自己的代码来测试应用程序失去焦点,以便我可以手动隐藏上下文菜单?我曾假设这个功能将被内置.

[问题出现在Windows 7中,通过Qt插件使用Visual Studio 2010 Pro进行编译 – 我没有在任何其他操作系统下测试过]

我在api文档中注意到了这一点 –

如果我使用

myTrayIconMenu = new QMenu( );

代替

myTrayIconMenu = new QMenu( this );

当应用程序失去焦点时,将删除上下文菜单.但是,我需要注意手动删除上下文菜单.

其他人如何处理这种情况?

解决方法

在QApplication派生类而不是某些QWidget中实现QSystemTrayIcon可以解决此问题.

main.cpp中:

int main(int argc,char *argv[])
{
    return TestApp(argc,argv).exec();
}

testApp.cpp:

TestApp::TestApp(int &argc,char **argv) :
    QApplication(argc,argv)
{
    quitAction = new QAction("quit",this);
    connect(quitAction,SIGNAL(triggered()),SLOT(quit()));
    systemTrayMenu = new QMenu("tray menu");
    systemTrayMenu->addAction(quitAction);

    trayIcon = new QSystemTrayIcon( this);
    trayIcon -> setToolTip("test app");
    connect(trayIcon,SIGNAL(activated(QSystemTrayIcon::ActivationReason)),SLOT(iconActivated(QSystemTrayIcon::ActivationReason)));
    trayIcon -> setContextMenu(systemTrayMenu);
    trayIcon -> show();
}

大佬总结

以上是大佬教程为你收集整理的Windows – 当应用程序失去焦点时,Qt系统托盘上下文菜单仍然存在全部内容,希望文章能够帮你解决Windows – 当应用程序失去焦点时,Qt系统托盘上下文菜单仍然存在所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: