gpt4 book ai didi

c++ - QCoreApplication什么时候有效?

转载 作者:行者123 更新时间:2023-12-02 09:56:55 25 4
gpt4 key购买 nike

我想获取应用程序路径,但是当我在Qt Creator中运行应用程序时,applicationPath()方法返回一个空字符串:

    int main(int argc, char *argv[]) {   
QLoggingCategory::setFilterRules("*.info=false\n");
QCoreApplication::setOrganizationName("company name");
QCoreApplication::setOrganizationDomain("companydomain.com");
QCoreApplication::setApplicationName("AppName");

#ifdef QT_DEBUG
//Install logging message handler
Logger::LogManager::setApplicationPath(QCoreApplication::applicationFilePath());
qInstallMessageHandler(Logger::LogManager::logMsg);
qDebug() << "built with debug";
#else
qDebug() << "built for release";
#endif
...

最佳答案

即使您的实际问题有所不同,我也会说明问题。
QCoreApplication根据可执行文件计算文件路径和默认应用程序名称。该可执行文件取自first command-line argument, argv[0]

您必须首先使用这些参数实例化QCoreApplication(即使它们是静态的,它们也会访问必须初始化的内部单例)。

实际上,在没有任何先前实例的情况下访问此类方法时,Qt会向您发出控制台警告:

QCoreApplication::applicationFilePath: Please instantiate the QApplication object first


#include <QCoreApplication>
#include <QDebug>

int main(int argc, char *argv[])
{
qDebug() << "applicationFilePath" << QCoreApplication::applicationFilePath();
qDebug() << "applicationName" << QCoreApplication::applicationName();
QCoreApplication a(argc, argv);
qDebug() << "applicationFilePath" << QCoreApplication::applicationFilePath();
qDebug() << "applicationName" << QCoreApplication::applicationName();

return a.exec();
}

输出量
CoreApplication::applicationFilePath: Please instantiate the QApplication object first
applicationFilePath ""
applicationName ""
applicationFilePath "D:/src/stackoverflow/59355035/debug/59355035.exe"
applicationName "59355035"

关于c++ - QCoreApplication什么时候有效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59355035/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com