QApplicationから派生しQCoreApplicationます。ソース
からわかるように、次のように定義されています。applicationDirPath
QString QCoreApplication::applicationDirPath()
{
if (!self) {
qWarning("QCoreApplication::applicationDirPath: Please instantiate the QApplication object first");
return QString();
}
// ... more code
}
selfコードを深く掘り下げると、関数によって初期化さinitれ、コンストラクターによって呼び出されることがわかります。そのため、クラスのインスタンス (この場合は のインスタンス)
を明示的に作成しない限り、期待どおりに動作しないように見えます。Q*ApplicationQApplication
上記のドキュメントから、そのようなクラスをできるだけ早く作成することが提案されていることに注意してください。
一般に、QCoreApplication、QGuiApplication、または QApplication オブジェクトを main() 関数でできるだけ早く作成することをお勧めします。exec() は、イベント ループが終了するまで戻りません。たとえば、quit() が呼び出されたとき。
もちろん、アクセスしようとする前であっても、という意味ですQApplication::applicationDirPath()。
そうしないと、使用中にそのメソッドから正しいパスを取得できなくなりますQSettings。