2012-01-24 4 views
2

QT 디자이너를 사용하여 QMainWindow를 만들었습니다. 신호 슬롯이있는 구성 요소가 있습니다. 내가 신호/슬롯 메커니즘을 사용할 수 있도록 일부 비 GUI 구성 요소 QObject를 만들었습니다.QMainWindow에 QDialog 연결

다음 단계는 모덜리스 대화 상자를 추가하는 것입니다. 대화 상자가 기본 창을 차단하지 않도록하고 싶습니다. 사용자가 클릭하여 대화 상자를 닫을 때까지 대화 상자를 활성 상태로 유지하고 싶습니다. 디자이너가있는 모덜리스 QDialog 오브젝트를 만들었습니다. 필요에 따라 대화 상자가 나타납니다. 텍스트 상자에 이전 세션의 정보도 유지합니다. 그것은 단지 파일명입니다.

그러나 QDialog를 QMainWindow에 연결하기 시작했을 때 신호/슬롯 메커니즘이 작동하지 않는 것 같습니다.

//In the .h file declared as member of the QMainWindow 
ScriptDialog *theScriptDialog; 

//In the .cpp file, the constructor of QMainWindow 
theScriptDialog = new ScriptDialog(this); 

QObject::connect(theScriptDialog, SIGNAL(notifyStartScript(QString)), SLOT (startScripting(QString))); 

어쩌면 내가 잘못 짚었 오전 :

내 코드입니다. 이와 같은 팝업 창을 만드는 더 좋은 방법이 있습니까?

답변

0

먼저 연결이 성공하는지 확인하십시오. 응용 프로그램 콘솔 출력에서 ​​연결 실패에 대한 경고를 확인한 다음 연결 호출의 리턴 값을 인쇄하십시오.

그런 다음 몇 가지해야 할 일 :

  • 당신은 scriptdialog.h에서 Q_OBJECT 매크로를 가지고 당신은 notifyStartScript이 곳 qDebug 인쇄/중단 점을 추가 새로운 Q_OBJECT 클래스
  • 를 추가 한 후 qmake를 실행하는 기억
  • 나온
  • startScripting 슬롯에 다른 것을 연결하고 qDebug 인쇄물 또는 중단 점을 연결하여
  • 소스 빌드를 사용하는 경우 (예 : qmake를 실행하고 소스 dir에서 명령 행에서 make를 수행 한 경우), 별도의 빌드 디렉토리에서 '섀도우 빌드'로 전환 한 경우 소스 디렉토리가 생성 된 .cpp 파일에서 깨끗한 지 확인하십시오. .h 및 .o 파일.
관련 문제