2012-03-12 9 views
1

QStandardItemModelをQStandardItemで使用しています。QTreeViewとsetIndexWidget

私は自分のモデルと任意の代議員を書いたくありません。

私はちょうど

m_model->setColumnCount(2); 
for (int i = 0; i < sectionCount; i++) 
{ 
    QStandardItem * section = new QStandardItem(tr("Section %1").arg(i+1)); 
    section->setCheckable(true); 
    section->setCheckState(Qt::Checked); 

    for (int j = 0; j < itemsCount; j++) 
    { 
     QStandardItem * item = new QStandardItem(tr("Item %1").arg(j+1)); 
     item->setCheckable(true); 
     item->setCheckState(Qt::Checked); 

     QStandardItem * item2 = new QStandardItem("xxx"); 

     section->appendRow(QList<QStandardItem*>() << item << item2); 

     QComboBox * combo = new QComboBox(); 
     QModelIndex index = m_model->index(j, 1,); 

     // HERE i have index = {-1;-1} 

     ui->treeView_options->setIndexWidget(index, combo); 
    } 
    m_model->appendRow(section); 
} 

がsetIndexWidgetこの方法を使用することが可能です... 2列目のQComboBox'esでチェックボックスのツリーを持っていたいですか?

UPDATE:

私は2番目の列にはQComboBoxを持っていない...なぜ?

答えて

1

いいえ、動作しません:

この関数は、データの項目に対応する可視領域内の静的コンテンツを表示するために使用されるべきです。カスタムの動的コンテンツを表示したり、カスタムエディタウィジェットを実装したりする場合は、代わりにQItemDelegateをサブクラス化します。

+0

私はそれは私が、私はちょうど2列目のQComboBox'esとチェックボックスのツリーを持ちたい 'で理解したものではないのです...' ...静的コンテンツ – k06a

+0

うーんを表示したいと思います。静的は手動でデータ – Koying

+0

チェックボックスの内容は、コンパイル時に固定されているとは関係なく、あなたがそれを望む各セルの1つのコンボを作成する必要があるだろうことを意味します。私はちょうど私の質問 – k06a

5

実際には可能です。最初に2つの列を持つモデルを作成することをお勧めします。アイテムを行に作成し、それをモデルに追加します。アイテムを行に追加した後で、view->setIndexWidget()をコンボボックスのコンテンツと呼ぶことができます。それは私のために働いて、私は動的なコンテンツを持っています。 ItemDelegatesはもっと複雑ですが、私はsetIndexWidget()をお勧めします。

+2

を更新しました –

関連する問題