QT信号/插槽

时间:2014-12-06 21:13:21

标签: c++ qt qmake qtgui qt-signals

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

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

其中:

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

我发现错误,我无法在此QString中使用this->ui.textEdit(QString);我需要QString来自setX()信号粘贴到textEdit } m_addAgentDlg。怎么做到这一点?我在哪里弄错了?

1 个答案:

答案 0 :(得分: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);
}