2014-12-06 3 views
0

신호와 슬롯에 대한 질문이 있습니다. 내 응용 프로그램에서 하나의 객체에서 다이얼로그 윈도우의 textEdit으로 신호를 연결하려고합니다. 내 신호는 QString을 내 보냅니다. 캡슐화를 위반하는 경우 (개인 대신 UI를 공개로 설정) 신호를 textEdit에 직접 연결하면됩니다. 하지만 나는 그것이 올바른 방법이 아니라고 생각합니다. 나는 다음과 같은 것을 할 경우 :QT 신호/슬롯

connect(m_osgWidget->picker.get(), SIGNAL(setX(QString)), m_addAgentDlg, SLOT(getX(QString))); 

: 그것은 나에게 나는이 this->ui.textEdit(QString);QString를 사용할 수없는 오류를 제공

void getX(QString) 
{ 
    this->ui.textEdit(QString); 
} 

은 내가 textEdit에 붙여 QStringsetX()에서 신호를 필요 m_addAgentDlg. 이것을 어떻게 할 수 있습니까? 나는 어디에서 실수 했습니까?

답변

2

이 말은 유감이지만 기본 C++를 배워야합니다. 올바른 문법은 Qt를 사용하는 C++에서 이러한 것들에 대한 것입니다.

connect(m_osgWidget->picker.get(), SIGNAL(setX(const QString&)), m_addAgentDlg, SLOT(getX(const QString&))); 

// Why do you call it getX? Should it be called setText instead? 
void getX(const QString& string) 
{ 
    ui->textEdit->setText(string); 
} 
+0

글쎄, 나는 아직도 배울 필요가 없다는 것을 배웠습니다. 위에서 제공 한 모든 가능한 유형의 코드를 사용자가 제공 한 코드를 포함하여 모두 시도했습니다. 작동하지 않습니다. 그게 내가 여기서 물어 보는 이유야. 나는 객체에 슬롯이 없다는 메시지를 계속받습니다. –

+2

@AzraithSherkhan : qmake를 다시 실행해야하지만 C++ 책을 구입하십시오. 이런 상황에서 저자들이 왜 그들과 함께 생활했는지 말하는 것이 필요합니다. – lpapp

+0

고마워요! 나는 내 연구를 계속할 것이다. –