QApplication
은 QCoreApplication
에서 파생됩니다. 당신이 sources에서 볼 수 있듯이
, applicationDirPath
는 다음과 같이 정의된다 : 코드에 더 깊은 것까지
QString QCoreApplication::applicationDirPath()
{
if (!self) {
qWarning("QCoreApplication::applicationDirPath: Please instantiate the QApplication object first");
return QString();
}
// ... more code
}
, 우리는 self
에서, init
기능에 의해 초기화되는이 생성자에 의해 호출되는 것을 찾을 수 있습니다.
Q*Application
클래스 (이 경우 인스턴스는 QApplication
)의 인스턴스를 명시 적으로 만들지 않으면 예상대로 작동하지 않습니다. 문서에서
참고 가능한 한 빨리 이러한 클래스를 생성하는 것이 좋습니다 그 위에 : 일반적으로
, 우리는() 당신이 QCoreApplication, QGuiApplication 또는 주에서의 QApplication 객체를 생성하는 것이 좋습니다 가능한 한 일찍 기능한다. exec()는 이벤트 루프가 종료 될 때까지 리턴하지 않습니다. 예를 들어, quit()가 호출 될 때.
물론 QApplication::applicationDirPath()
에 액세스하기 전에 의미합니다.
그렇지 않으면 QSettings
을 사용하는 동안 해당 방법에서 올바른 경로를 가져올 수 없습니다.
고마워요! 나는 이제 싱글 톤을 올바른 방법으로 구현했으면 좋겠다. 적어도 디자인 패턴의 적절한 구현에 대해 배운 이후로 조금 시간이 걸렸다. 두 번째 사항 : 개인 회원으로 클래스 당 하나의 인스턴스 만 만드는 대신 QSettings의 로컬 인스턴스를 만들 때마다 이점은 무엇입니까? – honiahaka10
다르게 설명하겠습니다. 다른 방법으로는 이점이 없습니다. 'QSettings'은 설정 시스템에 대한 핸들입니다. 어쨌든 아주 드물게 사용하고 있습니다. –
@ honiahaka10 어떻게 그 싱글 톤을 구현했는지 자세히 설명해 주시겠습니까? – agbb