2009-12-30 4 views
2

MOC가없는 신호와 연결하는 이름이없는 신호를 사용할 수 있습니까? Qt는 나의 하나의 문제는 당신이Qt, 신호 이름없이?

this->connect(this->SaveBtn, SIGNAL(click()), SLOT(SaveClicked()));

같은 뭔가를 그리고 아무튼 다음 버튼이 작동하지 않습니다 알아내는 또는 문서를 검색하는 다른 신호를 찾기 위해 그 잘못 알 수있는 오류 검출이 없다는 것입니다 존재하지 않습니다. 또한 클래스 대신 이름을 통해 연결하는 것이 무의미하고 순환 낭비로 보입니다.

+3

는, 디버그 메시지가 튀어 나옵니다. IDE를 사용 중이거나 콘솔 창을 사용하도록 프로그램을 컴파일하는 경우 디버그 메시지가 표시됩니다. – blwy10

답변

8

connect 함수는 연결에 실패하면 false를 반환하고 표준 오류 (Windows에서는 DebugView가 읽는 이상한 곳)에 경고가 출력됩니다. 또한 사용자 환경에 QT_FATAL_WARNINGS=1을 설정하여 치명적인 오류로 경고를 만들 수 있습니다.

이름으로 연결하는 것은 의미가 없습니다. 예를 들어 런타임시 신호/슬롯 이름이 생성되는 연결을 설정할 수 있습니다.

+0

디버깅 할 때 Visual Studio의 "출력"창에서 디버그 출력을 볼 수도 있습니다. –

+0

+1 - QT_FATAL_WARNINGS에게 감사드립니다. - 그 사실을 알지 못했습니다. – JimDaniel

0

신호가 단지 방법이라는 사실 이외에 중간의 MOC 단계가 없으면 신호를 사용할 수 있다고 생각하지 않습니다. 그것은 당신이 연결을 엉망으로 만들었을 때 깃발이없는 고통입니다. 마지막 문장은 무엇을 의미합니까? 당신은 당신의 문제가 무엇인지 정교 할 수 있습니까? 신호/슬롯은 완벽한 시스템이 아니며, 완벽한 시스템이 종료된다고 생각하지 않지만 꽤 직관적이며 잘 작동합니다.

+0

콜백 배열을 사용할 수있는 경우 이름과 연결하는 것이 좋은 이유는 무엇입니까? – user230821

+0

콜백 배열이 있어도 어떤 점에서 무엇을 연결해야하는지, 이름을 사용하여 지정해야 할 필요없이 어떻게 작동하는지 생각조차 할 수 없습니다. 구체적으로 어떻게 작동해야한다고 생각하십니까? – JimDaniel

+0

글쎄 개인적으로 나는 이벤트와 함께. NET을 좋아하는 GUI 라이브러리를하고 싶습니다. 난 .net을 사용 하겠지만, .NET Framework가 필요하기 때문에 프로젝트를 제한하고 싶지는 않다. 특히 GUI 용입니다. – user230821

0

아니요, 그 주위에는 실제적인 방법이 없습니다.

MOC를 사용하고 이름을 통해 연결해야합니다. 그러나 시간이 흐르면 ​​당신이 "자라나는"것을 알게 될 것이고, 정말로 당신을 괴롭히지 않을 것입니다. 매 순간 작은 스 니펫 (snippet)으로 코드를 추가하고, 추가 한 내용이 작동하는지 테스트하십시오. 그러면 문제가 없습니다.

0

나는 일반적으로

m_pCancelPushButton = new QPushButton(tr("Cancel")); 
m_pCancelPushButton->setObjectName("CancelButton"); 


//MetaObject Connections 
QMetaObject::connectSlotsByName (this); 

이 코드에게 내가 당신을 도움이되기를 바랍니다

void Class_name::on_CancelButton_clicked() 
{ 
//Do your job here. 
    reject(); 
} 

를 작성하는 나를 수, 코딩 스타일 다음 연습. 신호가 존재하지 않거나 연결이 실패 할 때

덕분에, 라훌 사실

관련 문제