Qt:使用takeTopLevelItem后,re setItemWidget无效

时间:2012-02-14 03:51:16

标签: qt

使用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);
    }

1 个答案:

答案 0 :(得分:0)

takeTopLevelItem QTreeWidgetItem移除 QTreeWidget,因此您必须保存并阅读它。

QTreeWidgetItem *item = ui.m_pTreeProperty->takeTopLevelItem( 0 );
ui.m_pTreeProperty->addTopLevelItem(item);