标题:Qt中tablewidget里添加combobox控件的问题
作者:leeyoung1013
日期:2019-12-06 17:17
内容:
需要用Qt做一个表格界面,需要在某几列添加一个下拉框,我用combobox做了。但是在判断combobox值然后写入文件的时候出现问题,单击为嵌入控件的表格项是可以返回行列号的,但是单击combobox控件无法返回行列号,导致无法判断是哪个combobox进行了改值的操作,因为把所有的combobox出现改值的信号全部链接到一个槽函数中。有没有大神能知道一下怎么能取到当前控件的行列号,或者可以让顶层的combobox控件继承tablewidget的信号,可以对点击tablewidget的信号做出回应。
总结一下,就是我需要我点击tablewidget中我插入的combobox控件,我想要知道我点击的行列号。
#1 [cdhigh 12-06 21:40]
这样行不行?
在创建ComboBox的时候 :
combobox->setProperty("Row", row)
combobox->setProperty("Col", col)
在需要获取行列信息时:
combobox->property("Row")
combobox->property("Col")
#2 [leeyoung1013 12-07 14:32]
这样好像不行,我还是想有没有什么办法 让添加了combobox组件的项和其他正常项一样,通过单击或者双击能够返回行列号是最好
#3 [zypher 12-07 20:35]
QTableWidgetItem *item= ui.tableWidget->itemAt(QPoint(combox->x(), combox->y()));
int row = item->row();
#4 [cdhigh 12-08 21:32]
如果在Python,这个问题很好解决,使用partial函数即可,槽函数添加两个参数(行列),
然后在创建combobox是链接的槽函数使用partial(xxx, row=row, col=col)
我不熟悉C++ 的partial 函数,不知能否这样实现?
#5 [realfan 12-11 22:31]
尝试一下用代理的方式,比如定义一个class ComboDelegate : public QStyledItemDelegate
table->setItemDelegateForColumn(col, comboDelegate);