[英]C++ QT5 TextEdit append
連接
{connect(ui->add, SIGNAL(clicked()),ui->text,SLOT(text.append(line)));}
question I want to add a function that is appended to the lower text window when I enter a string in the upper line window and click Add, but the function does not work.
您可以將您的按鈕連接到 lambda 插槽以執行您想要的 Qt5 樣式,如下所示:
connect(ui->add, &QPushButton::clicked, this, [this]() {
ui->text->append(line);
} );
我假設您的 'ui->add' 是按鈕,而 'ui->text' 是 QTextEdit? 如果是這種情況,按照 Farshid616 的建議,您需要使用lambda 。 為什么? 兩個原因:
clicked()
不返回任何內容(請參閱此處的 function 簽名),而append(const QString &text)
需要一個字符串(請參閱此處)。connect(const QObject *sender, PointerToMemberFunction signal, Functor functor)
來克服此問題的簡單方法,我們使用 lambda 作為函子(參見下面的示例)。 這是一個重載的連接調用(請參閱此處的簽名)。QObject::connect(your_button, &QPushButton::clicked, [this]() {
your_text_edit->append(your_line_edit->text());
} );
注意:您需要在 lambda 中“捕獲” this
(當前 object 指針),以便允許訪問your_text_edit
和your_line_edit
,它們是this
的成員(即this->your_text_edit
和this->your_line_edit
)。 this
的捕獲是通過引用。 如果我們更明確地編寫上面的代碼,您可以更清楚地看到這一點:
QObject::connect(this->your_button, &QPushButton::clicked, [this]() {
this->your_text_edit->append(this->your_line_edit->text());
} );
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.