2012-02-14 11 views
0

takeTopLevelItemを使用した後、setItemWidgetは成功しません。 QCheckBoxは表示されません。Qt:使用後にsetItemWidgetが役に立ちません。

しかし、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

takeTopLevelItemQTreeWidgetからQTreeWidgetItemを削除します。

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

ありがとうございました。しかし、私はそれが正しいとは思わない。最初にaddTopLevelItemを呼び出すと、メンバーポイントが送信されます。 takeTopLevelItemはメンバポイントと同じアドレスを返します。あなたのものか私のものかを問わず、同じアドレスで成功しません。 – Kaleidos

関連する問題