2014-12-06 141 views
0

我有一个关于信号和插槽的问题。在我的应用程序中,我想在对话窗口中将一个对象的信号连接到textEdit。我的信号发出QString;如果我违反了封装(通过使UI公开而不是私有)并将信号直接连接到textEdit它可以工作。但我觉得这不是正确的方法。如果我让像下面这样:QT信号/插槽

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

其中:

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

它给了我,我不能在这个this->ui.textEdit(QString);使用QString一个错误,我需要粘贴到textEditQStringsetX()信号的m_addAgentDlg。如何做到这一点?我在哪里犯了一个错误?

回答

2

我很抱歉地说这个,但你需要学习基本的C++。正确的语法是这样的C++与Qt这样的事情:

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

嗯,我仍然学习,所以没有必要说。我已经尝试了以上所有可能的代码类型,包括您提供的代码。它不起作用。这就是为什么我在这里问它。我继续得到消息,说明对象中没有这种插槽。 – 2014-12-07 00:46:39

+2

@AzraithSherkhan:你必须重新运行qmake,但是请购买一本C++书。有必要说这些情况是作者为什么要与他们一起度过生命的原因。 – lpapp 2014-12-07 01:15:40

+0

谢谢!我会继续我的学习 – 2014-12-07 13:08:40