Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 使用windeployqt工具后未显示QSystemTrayIcon_C++_Windows_Qt - Fatal编程技术网

C++ 使用windeployqt工具后未显示QSystemTrayIcon

C++ 使用windeployqt工具后未显示QSystemTrayIcon,c++,windows,qt,C++,Windows,Qt,注意:是的,这个问题以前已经问过并回答过,但副本的答案不完整。如果您在这方面遇到困难,请参阅我的解决方案。 使用Qt 5.13.0 MSVC2017 64位和Windows 10,我在QSystemTrayIcon中遇到了一些奇怪的行为。在新版本的QtCreator的Debug或Release中运行时,不会出现任何问题,图标会准确地显示我期望的结果。但是,使用windeployqt.exe工具后,图标停止显示 当我在windeployqt.exe之后从QtCreator运行它时,以及通过Qt安装

注意:是的,这个问题以前已经问过并回答过,但副本的答案不完整。如果您在这方面遇到困难,请参阅我的解决方案。

使用Qt 5.13.0 MSVC2017 64位和Windows 10,我在QSystemTrayIcon中遇到了一些奇怪的行为。在新版本的QtCreator的Debug或Release中运行时,不会出现任何问题,图标会准确地显示我期望的结果。但是,使用
windeployqt.exe
工具后,图标停止显示

当我在
windeployqt.exe之后从QtCreator运行它时,以及通过Qt安装程序框架从安装目录运行它时,都会发生这种情况。如果我删除构建目录、清理和重建,问题就会消失,但显然这是部署的问题

命令:

windeployqt.exe <RELEASE_DIR>
windeployqt.exe
(还尝试直接指定可执行文件)

主窗口构造函数:

AltheaWindow::AltheaWindow(宏列表模型和宏列表模型,配置*Config,常量QString和配置路径,QWidget*父项)
:QMainWindow(父级),
ui(新ui::AltheaWindow),
宏(宏列表模型),
配置(配置),
trayIcon(QIcon(IconPath),本),
shortcutNew(ShortcutPtr(newqshortcut(NewMacro,this))),
shortcutSave(ShortcutPtr(新的QShortcut(SaveMacro,this))){
qDebug()setupUi(此);
用户界面->侧栏->创建设置对话框(配置,配置路径);
初始化连接();
QFile f(IconPath);
bool exists=f.exists();
qDebug()setMacros(¯oListModel);
如果((*(*config)[AltheaConfig::StartMinimized]).toBool())showmimized();
}

无论图标是否显示,
存在
始终为
,因此这似乎不是解决资源的问题。应用程序中的所有其他资源也可以正常工作。

找到解决方案后,将imageformats复制到插件目录

解决方案:

补充说明: 对于遇到此问题的任何人,我发现在初始化应用程序对象之前,我还需要在库路径上安装imageformats插件

#定义插件“插件”
void preInit(char*argv[]);
int main(int argc,char*argv[]){
#ifndef\u调试
preInit(argv);
#恩迪夫
Althea应用程序(argc、argv);
altheaw窗口(app.getMacros(),&app.getConfig(),app.getAppData().absoluteFilePath(Althea::ConfigFileName));
w、 show();
返回app.exec();
}
void preInit(char*argv[]{
QDir releaseDir(QFileInfo(argv[0]).dir());
QCoreApplication::addLibraryPath(releaseDir.absoluteFilePath(插件));
}

IconPath
看起来怎么样?有时,托盘图标是隐藏的-您必须使用Windows设置在任务栏上显式显示它。
const QString altheavown::IconPath=“:/icons/althea.ico”
您能否详细说明在Windows设置中显式显示它的含义?在任务栏的右侧,您希望看到托盘图标的地方,有一个小箭头按钮
^
。工具提示上写着“显示隐藏的图标”。当您单击它时,会出现一个带有一些附加图标的弹出窗口。你的图标在其中吗?哦,我明白你的意思了,默认情况下,所有图标对我都是隐藏的,不,它不在那里。在我使用windeployqt之前,它就在那里。