首页 > 解决方案 > QCoreApplication 何时有效?

问题描述

我想获取应用程序路径,但是当我在 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
    ...

标签: c++qtqcoreapplication

解决方案


我已经通过更改例程来获取应用程序名称来解决此问题名称,因为这确实是我需要的:

    Logger::LogManager::setApplicationName(QCoreApplication::applicationName());

无论如何,QCoreApplication::applicationFilePath()并且QCoreApplication::applicationDirPath()在创建QCoreApplication实例后可用。如果您需要在创建QCoreApplication实例之前获取应用程序路径,则需要参考 argv[0] 并为您的用例解析它。


推荐阅读