将QWidget映射到变量

Map QWidget to variable

本文关键字:变量 映射 QWidget      更新时间:2023-10-16

我们的想法是将QWidget与一个变量连接起来,这样当小部件上的文本发生变化时,它也会在变量中发生变化。

只需像这样的一行

WidgetMapper::connect(ui->lineEdit, SIGNAL(textChanged(QString)), someClass.var);

其将例如CCD_ 1与变量连接。

1) 这将在行编辑中显示var

2) 当lineEdit触发textChanged(QString)信号时,WidgetMapper会使用stringstream将此QString转换为正确的映射类型,并将其写入var

但我真的不太了解模板,也不知道这是否可能。我认为不可能为每个类型使用一个WidgetMapper,所以我也尝试为每个类型创建单独的实例(WidgetMapper<int> mapper;),这仍然比为每个QLiteEdit编写setter和onTextChangedSlot更好,但我不知道如何使其也能工作(转换器部分仍然不知道正确的类型)。

WidgetMapper使用QSignalMapper将信号映射到QWidget,它工作得很好,我遇到的问题是将QString转换为模板变量。

那么这有可能吗?如果是的话,我该怎么做?或者这个问题已经有了解决方案?(以某种方式将QDataWidgetMapper与包含变量的类一起使用?)

首先,如果可能的话,连接变量只会调用一些函数。

第二次尝试使用QSignalMapper,这样您就可以为所有小部件使用一个插槽,前提是您将它们的指针保持在一个数组中,索引是SignalMapper发出的信号(int)。这样,您的插槽就可以使用MyWidgetArray[i]->text()