2011-03-20 33 views

答えて

18

アイテムのsetCheckStateメソッドを使用するチェックボックスでは、リストウィジェットとテーブルウィジェットの両方に必要な処理を行う必要があります。以下のコードは、あなたのために働くだろうかどうかを確認してください:

リストウィジェット:

QListWidgetItem *item0 = new QListWidgetItem(tr("First"), listWidget); 
QListWidgetItem *item1 = new QListWidgetItem(tr("Second"), listWidget); 

item0->setCheckState(Qt::Unchecked); 
item1->setCheckState(Qt::Checked); 

表ウィジェット:

QTableWidgetItem *item2 = new QTableWidgetItem("Item2"); 
item2->setCheckState(Qt::Checked); 
tableWidget->setItem(0, 0, item2); 

あなたは、エディタのウィジェットの他のタイプのためのデリゲート(QItemDelegate)を使用することができ、例はここにあります:Spin Box Delegate Example

Spin Box Delegate

私はこのことができます願っています。

+6

うわー。このコメントが正解として選択されたことに驚いた。チェック状態のQListWidgetItemを設定するのは 'テーブルやリストにチェックボックスを追加する 'のではないからです。また、デリゲートの作成は、これらのウィジェットをテーブルまたはリストに挿入する方法ではありません。これは、セルの編集にのみ使用されます。 –

+0

は、これがOPが望んでいたものだからかもしれません。そして彼の質問はオープンなので、この答えは彼がどのようにウィジェットを作成するかの方法の1つです。ほとんどの場合、コントロールを表示しないフィールドを編集すると、コントロールが表示されます。 setCellWidgetを使用してセルにウィジェットを供給しても、このウィジェットはモデルの一部にならないため、ウィジェットのコンテンツとイベントを手動で処理する必要があります。 –

+0

"QList ** Widget **とQTable ** Widget **について詳しく説明できますか?その代理人を褒めることは不可能です"というコメント?両方のウィジェットはQAbstractItemView子孫です。何もそれらのアイテムデリゲートを設定できません。私のポストのスピンボックスの例は、QTableWidgetと完全に動作します –

41

二つの方法があります:

void QTableWidget::setCellWidget (int row, int column, QWidget * widget) 

void QListWidget::setItemWidget (QListWidgetItem * item, QWidget * widget) 

は、彼らはQWidgetのを継承するすべてのウィジェットや他のコントロールを挿入することができます。チェックボックス/ラジオボタン/コンボボックスはQWidgetから継承します。

+5

私はそれが正解として選択されていないと戸惑うことに同意します。私は調査に多くの時間を費やすことはありませんでしたが、QTableWidgetItemにチェック可能なフラグを設定すると、チェックボックスが表示されると思いました。しかし、setCellWidget()は機能しました。 – Scott

+1

チェックが入っているかどうかはどうすればわかりますか? – Petr

+1

'checkbox.checkState()== 0 or == 2'でチェックしてください。もう1つはckeckedです。私はpythonでexcampledしています。変換する必要があります。 to-> – PersianGulf

関連する問題