使用takeTopLevelItem
后,setItemWidget
未成功。 QCheckBox
未显示。
但是,如果我更新m_pDrawBox的观点,那很好。
我有什么遗失的吗?
我想实现改变控制属性之类的东西。 QTreeWidget(m_pTreeProperty)
将由不同的控件更改。所以我需要将旧属性重置为QTreeWidget
。
这是我的代码:
qtForm::qtForm(QWidget *parent, Qt::WFlags flags): QMainWindow(parent, flags)
{
ui.setupUi(this);
ui.m_pTreeProperty->setColumnCount(2);
QStringList lstStr;
lstStr.clear();
lstStr.append("Property");
lstStr.append("Value");
ui.m_pTreeProperty->setHeaderLabels(lstStr);
QTreeWidgetItem* m_pDrawBoxItem = new QTreeWidgetItem;
QCheckBox* m_pDrawBox = new QCheckBox;
m_pDrawBoxItem->setText(0,"drawbox");
ui.m_pTreeProperty->addTopLevelItem(m_pDrawBoxItem);
ui.m_pTreeProperty->setItemWidget( m_pDrawBoxItem,1,m_pDrawBox);
ui.m_pTreeProperty->takeTopLevelItem( 0 );
ui.m_pTreeProperty->addTopLevelItem(m_pDrawBoxItem);
--m_pDrawBox = new QCheckBox;
--m_pDrawBoxItem->setText(0,"drawbox");
ui.m_pTreeProperty->setItemWidget( m_pDrawBoxItem,1,m_pDrawBox);
}
答案 0 :(得分:0)
takeTopLevelItem
从QTreeWidgetItem
移除 QTreeWidget
,因此您必须保存并阅读它。
QTreeWidgetItem *item = ui.m_pTreeProperty->takeTopLevelItem( 0 );
ui.m_pTreeProperty->addTopLevelItem(item);