查看完整版本: [-- Qt中tablewidget里添加combobox控件的问题 --]

QTCN开发网 -> Qt基础编程 -> Qt中tablewidget里添加combobox控件的问题 [打印本页] 登录 -> 注册 -> 回复主题 -> 发表主题

leeyoung1013 2019-12-06 17:17

Qt中tablewidget里添加combobox控件的问题

        需要用Qt做一个表格界面,需要在某几列添加一个下拉框,我用combobox做了。但是在判断combobox值然后写入文件的时候出现问题,单击为嵌入控件的表格项是可以返回行列号的,但是单击combobox控件无法返回行列号,导致无法判断是哪个combobox进行了改值的操作,因为把所有的combobox出现改值的信号全部链接到一个槽函数中。有没有大神能知道一下怎么能取到当前控件的行列号,或者可以让顶层的combobox控件继承tablewidget的信号,可以对点击tablewidget的信号做出回应。
        总结一下,就是我需要我点击tablewidget中我插入的combobox控件,我想要知道我点击的行列号。

cdhigh 2019-12-06 21:40
这样行不行?

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

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


leeyoung1013 2019-12-07 14:32
这样好像不行,我还是想有没有什么办法 让添加了combobox组件的项和其他正常项一样,通过单击或者双击能够返回行列号是最好

zypher 2019-12-07 20:35
QTableWidgetItem *item= ui.tableWidget->itemAt(QPoint(combox->x(), combox->y()));
int row = item->row();

cdhigh 2019-12-08 21:32

如果在Python,这个问题很好解决,使用partial函数即可,槽函数添加两个参数(行列),
然后在创建combobox是链接的槽函数使用partial(xxx, row=row, col=col)

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


realfan 2019-12-11 22:31
尝试一下用代理的方式,比如定义一个class ComboDelegate : public QStyledItemDelegate

table->setItemDelegateForColumn(col, comboDelegate);


查看完整版本: [-- Qt中tablewidget里添加combobox控件的问题 --] [-- top --]



Powered by phpwind v8.7 Code ©2003-2011 phpwind
Gzip disabled