gpt4 book ai didi

qt - 将多个信号连接到 Qt 中的单个插槽

转载 作者:行者123 更新时间:2023-12-04 06:59:05 25 4
gpt4 key购买 nike

我正在尝试跟踪少数 QTextEdits 的 textChanged() 信号。无论文本编辑发出信号如何,我都想做同样的事情:如果 QListWidget 为空,则取消选中其关联的复选框,否则将其选中。我的功能如下:

void MainWindow::changed()
{
QString tempStr = ui->hNMRedit->toPlainText();
if(tempStr != "")
{
ui->checkList->item(0)->setCheckState(Qt::Checked);
}
else
{
ui->checkList->item(0)->setCheckState(Qt::Unchecked);
}
}

使用当前的方法,我必须为每个 QTextEdit 创建一个这样的函数;每个函数都包含几乎相同的代码。如果我将每个文本编辑存储在一个数组中(以便我可以在 QListWidget 中找到它们的关联索引),我是否有可能拥有这样的插槽?
void MainWindow::changed(QWidget *sender)   // for whichever text edit emits the
// textChanged() signal
{
QString tempStr = sender->toPlainText();
if(tempStr != "")
{
// I would potentially use some sort of indexOf(sender) function on the array I
// mentioned earlier here... a little new to Qt, sorry
ui->checkList->item(array.indexOf(sender))->setCheckState(Qt::Checked);
}
else
{
// same as above...
ui->checkList->item(array.indexOf(sender))->setCheckState(Qt::Unchecked);
}
}

这是可能的还是我应该为每个文本编辑创建一个单独的插槽?
如果需要进一步说明,请告诉我!

最后,我觉得 QLineEdits 和 QTextEdits 之间唯一有意义的区别是默认大小。为了保持一致,我应该在整个 UI 中使用这些对象之一吗?

谢谢!!!

最佳答案

我认为您错过了插槽和信号的重点。你是如何建立联系的?
当任何文本框更改时,您是否尝试选中一个框?如果是这样,请使用 QSignalMapper映射 textChanged()发送信号以发送 true 值并将其连接到 QCheckBox setChecked(bool)投币口。

如果觉得太复杂了,子类QCheckBox 并创建一组函数checkBox() uncheckBox()所以你可以在没有变量的情况下切换状态。然后连接QTextEdit textChanged()到您的子类 checkBox()
如果这不是你要找的,至少子类 QTextEdit 接受一个 QCheckBox,它可以在文本更改时更改,而不是为每个 QTextEdit 复制代码

关于qt - 将多个信号连接到 Qt 中的单个插槽,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2169487/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com