c++ - 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] 并为您的用例解析它。
推荐阅读
- python - 重新捕获与相同模式python匹配的多个组
- java - String replaceAll() method replace except string
- javascript - How to limit the number of selected check-boxes in React JS?
- ios - Way to dequeue multiple cells in UIcollectionview
- ios - Subclass of UIButton cant call the buttonType initializer
- c - C preprocessor adds trailing "1" after expanding a macro defined in a command line
- php - 将 Postman 请求转换为 guzzle 或其他 PHP HTTP 客户端
- docker - 如何使 docker 请求服务名称而不是 IP 地址
- sql-server - EncryptByPassPhrase 舍入大于 6 位的数字
- mysqli - getting the 1st row in a database