gpt4 book ai didi

c++ - 单击时如何获取放置在Qtablewidget单元格中的小部件的行号?

转载 作者:搜寻专家 更新时间:2023-10-31 02:10:28 24 4
gpt4 key购买 nike

enter image description here

我正在尝试的是在用户选择项目时获取 QcomboBox 的行号。虽然使用

很容易获得单元格的列和行
cellClicked(int,int)

信号,但它仅在单元格上没有小部件时才有效。

如果单元格中放置了一个小部件,那么如何获取行号。

注意:所有组合框都是动态添加的

最佳答案

最后我找到了两种方法。

  1. 通过设置QComboBox的属性
  2. 使用 QSignalMapper

第一种方法

QComboBox* mCombo = new QCombobox();
mComboBox->setProperty("row",(int) i); // i represents the row number in qtablewidget

在您处理被点击的 QComboBox 的处理函数中

int row = sender()->property("row").toInt();

第二种方法

QSignalMapper *signalMapper= new QSignalMapper(this);   //Create a signal mapper instance 

for (each row in table) {
QComboBox* mCombo = new QComboBox();
table->setCellWidget(row,col,combo);
connect(mCombo, SIGNAL(currentIndexChanged(int)), signalMapper, SLOT(map()));

/*connect each signal of QComboBox to signal Mapper slot (i.e map()) which in turns connected to the signal of signalMapper calling the SLOT associated with it (i.e rowFinder) */

signalMapper->setMapping(combo, (int)row); //assign mapping to each widgetusing set mapping


}

connect(signalMapper, SIGNAL(mapped(int)),
this, SLOT(rowFinder(int)));

函数:行查找器(int rowIndex)

int row = rowIndex; //here is the row indexof selected QComboBox

关于c++ - 单击时如何获取放置在Qtablewidget单元格中的小部件的行号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45182348/

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