我已经在这里阅读了一些关于信号和插槽及其参数的主题,但没有发现以下问题: 我正在使用Qt 5.7
我只有2个类,在1st之内,我想用字符串消息和位置(或特定对象)发出信号来显示它。
现在是这样的:我有第一堂课我发出信号:
emit signalWriteToTextEdit("hallo","textEdit_3");
我想做的是以某种方式传递像textEdit这样的对象作为第二个参数。现在没有QString。
第二课内是插槽:
void writeToTextEdit(QString info, QString where){
where.append(info); //I would like to do something like this
}
只是不知道如何考虑第二个参数"其中"作为可访问的对象,例如textEdit,所以我可以改变它的内容。
我也在考虑是否可能:
如果不清楚,我会解释更多
答案 0 :(得分:0)
经过一番挖掘后,我遇到了QObject::findChild函数。这将允许通过UI递归地查找字符串,这些我不确定性能。
编辑以获取更多详细信息:
返回此对象的子对象,该对象可以强制转换为类型T,称为name,如果没有此对象,则返回0。省略name参数会导致所有对象名称都匹配。搜索是递归执行的。
如果有多个匹配搜索的子项,则最直接 祖先归来。如果有几个直接的祖先,那就是 未定义哪一个将被退回。在那种情况下,findChildren() 应该使用。
答案 1 :(得分:0)
只需使用QWidget*
或QObject*
(如果它不总是一个小部件)作为参数类型
signals:
void writeToTextEdit(const QString &what, QWidget *where)
或者如果它总是QTextEdit
更具体
signals:
void writeToTextEdit(const QString &what, QTextEdit *where)
虽然不清楚为什么代码在有权访问目标对象时需要发出信号,但它可以直接调用setText