【发布时间】:2019-03-07 10:53:57
【问题描述】:
我想使用插槽setText(const QString &text)
QObject::connect(ui->treeWidget, SIGNAL(itemSelectionChanged()), ui->textEdit, SLOT(setText(const QString &text)));
我可以将要显示在我的QTextEdit 中的文本放在哪里?
我有一个QTreeWidget,我想显示currentitem()。
【问题讨论】:
-
请比较
QTreeWidget::itemSelectionChanged和QTextEdit::setText()的签名 - 它们不匹配。因此,事情并没有那么简单。您必须编写一个函数(或 lambda)从树小部件中检索当前项目的文本,以将其传递给QTextEdit。 -
我该怎么做?我必须写新的信号?谢谢
-
从Qt5开始,任何匹配的函数/成员函数都可以作为slot。因此,一种选择是使用 lambda 作为发送方和接收方之间的适配器(如 Romha 的回答所示)。它被称为“适配器”,因为它使不匹配的槽函数签名适应信号所需的签名。您不需要新信号或新插槽 - 您只需将现有插槽包装在 lambda 中,它会转换(或丰富)插槽的必要信息。顺便提一句。你正在使用 Qt5 吗? Qt4 还没有提供这些功能。
标签: c++ qt signals-slots slot