【发布时间】:2017-02-07 15:59:42
【问题描述】:
我正在使用 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);
现在在QComboBox 的currentIndexChanged(int) 信号上,我正在连接到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);
任何人都可以提出其他方法或指出这些代码段中的错误吗?
找到可能的解决方案
可以使用cb->parent()->parent() 检索父窗口小部件。虽然,这个过程没有记录,所以,不可靠。
【问题讨论】:
标签: c++ qt qtablewidget qcombobox