C++QT5文本编辑追加


  1. 连接

    {connect(ui->添加,SIGNAL(单击(((,ui->文本,SLOT(text.append(line((;}

  2. 问题当我在上一行窗口中输入字符串并单击"添加"时,我想添加一个附加到下一行文本窗口的函数,但该函数不起作用。

您可以将按钮连接到lambda插槽,以这样的Qt5样式执行您想要的操作:

connect(ui->add, &QPushButton::clicked, this, [this]() {
ui->text->append(line);
} );

我假设您的'ui->add'是按钮,'ui->text'是QTextEdit吗?如果是这种情况,正如Farshid616所建议的那样,您需要使用lambda。为什么?两个原因:

  1. 在Qt的信号&插槽,如果要将参数传递给SLOT,则需要在SIGNAL中返回它。在您的情况下,clicked()不返回任何内容(请参阅此处的函数签名(,而append(const QString &text)接受一个字符串(请参阅这里(
  2. Lambdas是通过使用connect(const QObject *sender, PointerToMemberFunction signal, Functor functor)来克服这个问题的一种简单方法,在CCD_3中,我们使用lambda作为函子(参见下面的示例(。这是一个过载的连接调用(请参阅此处的签名(
QObject::connect(your_button, &QPushButton::clicked, [this]() {
your_text_edit->append(your_line_edit->text());
} );

注意:您需要";捕获";以便允许访问作为this(即this->your_text_editthis->your_line_edit(的成员的your_text_edityour_line_editthis的捕获是参考的。如果我们更明确地写上面的代码,你可以更清楚地看到这一点:

QObject::connect(this->your_button, &QPushButton::clicked, [this]() {
this->your_text_edit->append(this->your_line_edit->text());
} );

相关内容

  • 没有找到相关文章

最新更新