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

标签 c++ qt 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
    ...

最佳答案

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

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

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

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

相关文章:

c++ - 仅在类范围内的模板特化

c++ - 在模板派生类中,为什么我需要在成员函数内使用 "this->"限定基类成员名称?

c++ - 链接器错误 LNK2038 : mismatch detected for 'RuntimeLibrary'

qt - 如何在 TableView (QML) 中选择一行?

qt - 来自非 GUI 子项目的 QCoreApplication::exit()

由文字分配的字符串的 C++ 管理

C++ thread assignment throwing SIGSEGV 收藏

C++ Delete[] 在 VS 2013 中给出错误

c++ - 我如何从主要功能到 QGLWidget 获得 'argc' 和 'argv'

python - 为什么 input() 会导致 "QCoreApplication::exec: The event loop is already running"?