【问题标题】:Qt connecting two signals and one slotQt连接两个信号和一个插槽
【发布时间】:2026-01-19 09:30:01
【问题描述】:

我有一个带有 QLabel、QTextEdit 和 QPushButton 的程序。

单击按钮时,我想将文本从 LineEdit 放入 Label。

我可以通过创建自己的插槽来做到这一点,但可以使用 Qt 插槽来完成吗?

我已经尝试过这段代码,但它不能按我的意愿工作......

this->connect(pushButton ,SIGNAL(clicked()), lineEdit, SIGNAL(textChanged(QString)), Qt::QueuedConnection);
t->connect(lineEdit, SIGNAL(textChanged(QString)) , label ,SLOT(setText(QString)), Qt::DirectConnection);

【问题讨论】:

    标签: c++ qt


    【解决方案1】:

    如果您需要强制用户按下 QButton 以将他/她在 QTextEdit 中键入的文本“应用”到 QLabel,也许您想检查插入文本的有效性,或者使用文本来实现一些目标或将其存储在变量中以供以后使用...因此您需要自定义插槽或自定义类。

    相反,您可以将信号 QTextEdit.textChanged(QString) 连接到插槽 QLabel.setText(QString),因此在 QTextEdit 中键入的所有内容都会发送到 QLabel,而无需按下按钮。

    但这一切都取决于你的目标。

    【讨论】:

    • 我知道,但这不是我想要的。我只是想知道是否可以按照我的方式去做......
    【解决方案2】:

    我会这样做:

    connect(ui->pushbutton, SIGNAL(clicked()), this, SLOT(slot_pushbutton_clicked()))

    然后在slot_pushbutton_clicked 插槽中,

    ui->label->setText(ui->lineEdit->text)

    希望对你有帮助:)

    【讨论】: