如何将QTextEdit传递给signal / slot机制

时间:2016-10-10 10:00:23

标签: qt

我已经在这里阅读了一些关于信号和插槽及其参数的主题,但没有发现以下问题: 我正在使用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,所以我可以改变它的内容。

我也在考虑是否可能:

  1. 是否有一些Ui对象的方法,比如按名称查找元素?
  2. 是否有可能与ui中的所有元素一起使用并检查它们的名称......?我试过但不知道该怎么做。
  3. 如果不清楚,我会解释更多

2 个答案:

答案 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