问题
如何使小部件知道它属于哪个选项卡“地址”,最终目的是将此信息传播到信号?
背景
下面的所有代码都是在同一个对象中完成的,因此我可以将this
其用作环回信号。
有一个设置文件将创建一个选项卡的“树”,例如
Sh(0) -> Be(0) -> Fe(0)
Sh(0) -> Be(1) -> Fe(0)
Sh(1) -> Be(0) -> Fe(1)
这将创建一个Sh 0
选项卡,其中包含一个选项卡显示Be 0
和一个选项卡显示Be 1
。Be 0
在此分支中将包含Fe 0
. 等等。
我在这里对其进行了简化,但最终版本将包含更多分支。为了简单起见,我不会为这个示例的访问者类方法而烦恼,而是我将所有选项卡映射到一个QMap
,例如,如果您想feTab
从上面的第一个示例访问该选项卡,则创建该选项卡,然后像这样访问:
QTabWidget *feTab = new QTabWidget(this);
m_mapTab[idSh][idBe] = feTab;
QGridLayout *lo = new QGridLayout;
m_mapTab[idSh][idBe][idFe]->addLayout(lo)
m_mapLo[idSh][idBe][idFe] = lo;
问题
太好了,所以我将所有选项卡分配给地图并Fe
使用QGridLayout
. QLineEdit
然后,我通过在布局中添加 a 来遍历我想要添加的寄存器 。
设置文件中的内容与问题无关。这只是针对树的每个分支完成的,设置文件会创建许多具有预定义值的预定义寄存器。我想QLineEdit
知道它在编辑时来自哪个分支。
for (auto& kv : nSettings)
{
... //code to work out row and column + make it all look nice + add a layout
QLineEdit *lineRegValue = new QLineEdit(this);
lineRegValue->setText(value[kv]);
clo->addWidget(lineRegValue);
m_mapLo[idSh][idBe][idFe]->addLayout(clo, row, column);
}
我的尝试
因此,我一直在尝试将信号分配给QLineEdit
我创建它的时候,如下所示:
connect(lineRegValue, SIGNAL(textEdited(QString)),
this, SLOT(onValueChanged(QString)));
我已经连接了一种方法,该方法输出qDebug()
. 问题是我不确定如何告诉系统它所属的树地址。我可以使用这些信息来创建一个带有用户更改值的新设置文件。有任何想法吗?
我的第一个想法是查看QLineEdit
已选择的选项卡并尝试阅读当前关注的选项卡以计算出地址,尽管我不确定如何执行此操作以及是否有更简单的方法。