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

标签 c++ qt qt4 qt4.8

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)));

函数:rowFinder(int rowIndex)

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

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

相关文章:

c++ - 在 C++ 中制作 QPushButton

c++ - QT中如何使QMenu Item可勾选

已知类型的 C++ 可变参数函数模板

c++ - C/C++ 指针和数组帮助

c++ - 如何查看网络流(http)中的视频?

c++ - Qt QGraphicsview 如何 Hook 调整事件大小

C++ Boost ASIO async_send_to 内存泄漏

c++ - Qt5 - 链接 pHash 库 "undefined reference"

c++ - 使用 Qt 进行音频信号处理 GUI 开发,如何?

qt - 如何在 QTabWidget 中的两个选项卡之间插入空格?