Qt连接两个信号和一个插槽
Posted
技术标签:
【中文标题】Qt连接两个信号和一个插槽【英文标题】:Qt connecting two signals and one slot 【发布时间】:2015-04-08 16:15:16 【问题描述】:我有一个带有 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);
【问题讨论】:
【参考方案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)
希望对你有帮助:)
【讨论】:
以上是关于Qt连接两个信号和一个插槽的主要内容,如果未能解决你的问题,请参考以下文章
Qt - 使用 lambda 函数修改先前连接信号的插槽参数