QT 信号/槽

Posted

技术标签:

【中文标题】QT 信号/槽【英文标题】:QT Signal / Slot 【发布时间】:2014-12-06 21:13:20 【问题描述】:

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

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 我需要将来自setX() 信号的QString 粘贴到m_addAgentDlgtextEdit 中。如何做到这一点?我哪里做错了?

【问题讨论】:

【参考方案1】:

我很抱歉这么说,但你需要学习基本的 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);

【讨论】:

嗯,我还在学习,所以没必要说。我已经尝试了上面发布的所有可能类型的代码,包括您提供的代码。它不起作用。这就是为什么我在这里问它。我继续收到消息说对象中没有这样的插槽。 @AzraithSherkhan:你必须重新运行 qmake,但请购买 C++ 书籍。有必要说,因为这些情况是作者与他们共度一生的原因。

以上是关于QT 信号/槽的主要内容,如果未能解决你的问题,请参考以下文章

qt 关于信号槽传递的参数问题

Qt 信号槽

Qt信号槽原理(链接)

qt信号和槽机制的问题

Qt编程中信号与槽机制可以用啥方法替换

Qt高级——Qt信号槽机制源码解析