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_addAgentDlg
的textEdit
中。如何做到这一点?我哪里做错了?
【问题讨论】:
【参考方案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 信号/槽的主要内容,如果未能解决你的问题,请参考以下文章