Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在QTableWidget内设置QComboBox的当前索引_C++_Qt_Qt4 - Fatal编程技术网

C++ 在QTableWidget内设置QComboBox的当前索引

C++ 在QTableWidget内设置QComboBox的当前索引,c++,qt,qt4,C++,Qt,Qt4,我在QTableWidget中有QComboBox。它是这样创建的: QComboBox* bb = new QComboBox(this); ui->propsWidget->setCellWidget(1, 0, bb); for (...) bb.addItem(...); 我需要以编程方式设置它的索引。我试过这个: QComboBox* bb = qobject_cast<QComboBox*>(ui->propsWidget->cellWi

我在QTableWidget中有QComboBox。它是这样创建的:

QComboBox* bb = new QComboBox(this);
ui->propsWidget->setCellWidget(1, 0, bb);
for (...)
    bb.addItem(...);
我需要以编程方式设置它的索引。我试过这个:

QComboBox* bb = qobject_cast<QComboBox*>(ui->propsWidget->cellWidget(1, 0));
bb->setCurrentIndex(5);

但目前的指数没有改变。我该怎么做?

您需要修改此行:QComboBox*bb=new qcomboxthis;因为QTableWidget拥有其所有子组件的所有权。因此,它必须成为QComboBox*bb=新的QComboBox;,父对象将是表本身。

那么在关闭对话框后如何删除它呢?Qt有其销毁机制。当您删除QTableWidget时,它的所有子项(包括QComboBox)也将被自动删除。谢谢,它可以正常工作。但我不明白所有权是如何影响小部件的访问的。@MichaelO。当您声明ComboBox*bb=new QComboxThis;,您使组合框成为当前小部件的子部件,而不是tablewidget。然而,当且仅当小部件是表的子部件时,来自tablewidget的任何方法都可以正常工作。
bb->setEditText("mytext"); // "mytext" is contained in bb