从其单元格小部件项中检索父级QTableWidget

时间:2017-02-07 15:59:43

标签: c++ qt qtablewidget qcombobox

我正在使用Qt 5.7和C ++开发一个项目。我陷入了一个奇怪的问题。

我有QTableWidget在其唯一的单元格中包含QComboBox。简化代码如下。

QTableWidget *tab = new QTableWidget();
tab->insertColumn(0);
tab->insertRow(0);
QComboBox *cb = new QComboBox(tab);
cb->addItem("A");
cb->addItem("B");
tab->setCellWidget(0, 0, cb);

现在在currentIndexChanged(int)的{​​{1}}信号上,我正在连接QComboBox,我正在尝试检索SLOT的指针,如下所示,

QTableWidget

但是,我没有得到与实际QComboBox* cb = qobject_cast<QComboBox*>(sender()); QWidget* par = cb->parentWidget(); 相同的指针。

我也尝试过如下,但仍然失败了。

QTableWidget

有人可以建议其他方法来做或指出那些代码段中的错误吗?

找到可能的解决方案

可以使用QComboBox* cb = qobject_cast<QComboBox*>(sender()); QObject *par = cb->parent(); QTableWidget *tab = qobject_cast<QTableWidget *>(par); 检索父窗口小部件。虽然,这个过程没有记录,所以,不可靠。

1 个答案:

答案 0 :(得分:1)

原因是QTableWidget不是QComboBox的直接父,而是祖父。但即使这是一个实现细节,也不能依赖,因为它没有记录。

一种出路可能是将QTableWidget指针存储在其他位置。