• 3069阅读
  • 5回复

Qt中tablewidget里添加combobox控件的问题 [复制链接]

上一主题 下一主题
离线leeyoung1013
 

只看楼主 倒序阅读 楼主  发表于: 2019-12-06
回复本帖可获得1RMB金钱奖励!
每人最多可获奖1次,奖池剩余0RMB金钱 (中奖几率10%)
— 本帖被 圣域天子 从 Qt安装与发布 移动到本区(2019-12-21) —
        需要用Qt做一个表格界面,需要在某几列添加一个下拉框,我用combobox做了。但是在判断combobox值然后写入文件的时候出现问题,单击为嵌入控件的表格项是可以返回行列号的,但是单击combobox控件无法返回行列号,导致无法判断是哪个combobox进行了改值的操作,因为把所有的combobox出现改值的信号全部链接到一个槽函数中。有没有大神能知道一下怎么能取到当前控件的行列号,或者可以让顶层的combobox控件继承tablewidget的信号,可以对点击tablewidget的信号做出回应。
        总结一下,就是我需要我点击tablewidget中我插入的combobox控件,我想要知道我点击的行列号。
离线cdhigh

只看该作者 1楼 发表于: 2019-12-06
这样行不行?

在创建ComboBox的时候 :
combobox->setProperty("Row", row)
combobox->setProperty("Col", col)

在需要获取行列信息时:
combobox->property("Row")
combobox->property("Col")

离线leeyoung1013

只看该作者 2楼 发表于: 2019-12-07
这样好像不行,我还是想有没有什么办法 让添加了combobox组件的项和其他正常项一样,通过单击或者双击能够返回行列号是最好
离线zypher

只看该作者 3楼 发表于: 2019-12-07
QTableWidgetItem *item= ui.tableWidget->itemAt(QPoint(combox->x(), combox->y()));
int row = item->row();
离线cdhigh

只看该作者 4楼 发表于: 2019-12-08

如果在Python,这个问题很好解决,使用partial函数即可,槽函数添加两个参数(行列),

然后在创建combobox是链接的槽函数使用partial(xxx, row=row, col=col)

我不熟悉C++ 的partial 函数,不知能否这样实现?

在线realfan

只看该作者 5楼 发表于: 2019-12-11
回帖奖励+ 1
尝试一下用代理的方式,比如定义一个class ComboDelegate : public QStyledItemDelegate

table->setItemDelegateForColumn(col, comboDelegate);
快速回复
限100 字节
 
上一个 下一个