2013-12-12 6 views

답변

2

스타일을 설정하기 전에 QApplication 인스턴스를 만들어야합니다. 스타일 개체의

소유권의 QApplication에 전송되는 문서에서, 그래서 의 QApplication은 응용 프로그램 종료에 스타일 개체를 삭제하거나 새로운 스타일이 설정 될 때 기존의 스타일은 여전히 ​​ 응용 프로그램의 부모 목적.

스타일 소유권을 가져올 QApplication이 없기 때문에 충돌이 발생한다고 생각합니다. 일반적으로 QApplication을 작성하는 것이 가장 먼저해야 할 일 중 하나입니다.

#include <QApplication> 
int main() { 
    QApplication a(argc, argv); 
    QApplication::setStyle("windows"); 
    QApplication::setStyle("windows"); 
} 
+0

개체가 필요한 경우 함수가 정적 인 이유를 설명 할 수 있습니까? – Ashot

+1

Qt의 역사를 알지 못하지만 어디서나 QApplication에 액세스 할 수 있도록 정적 인 것으로 가정합니다. QApplication에는 생성자가 설정 한 정적 자체 변수가 있으므로 정적 함수가 응용 프로그램 인스턴스에 액세스 할 수 있습니다. 생성자 전에 호출 된 모든 정적 함수는 NULL 포인터를 가져옵니다. 최고의 디자인은 아니지만 그 당시에는 이유가 있다고 확신합니다. QApplication :: instance() -> setStyle() 또는 이와 비슷한 것을 호출해야한다면 더 명확해질 것입니다. –

관련 문제