web-dev-qa-db-ja.com

QTableWidgetにチェックボックス/ラジオボタンを追加するにはどうすればよいですか

QTableWidgetまたはQListWidgetにチェックボックス/ラジオボタン/コンボボックスを追加するにはどうすればよいですか?

26
user664305

アイテムの 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

これがお役に立てば幸いです。

21
serge_gubenko

2つの方法があります。

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

そして

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

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

51
Pie_Jesu

このようなチェックボックスを追加することもできます

#include <QCheckBox>

void addCheckBoxAt(int row_number, int column_number,int state)
{

    // Create a widget that will contain a checkbox
     QWidget *checkBoxWidget = new QWidget();
     QCheckBox *checkBox = new QCheckBox();      // We declare and initialize the checkbox
     QHBoxLayout *layoutCheckBox = new QHBoxLayout(checkBoxWidget); // create a layer with reference to the widget
     layoutCheckBox->addWidget(checkBox);            // Set the checkbox in the layer
     layoutCheckBox->setAlignment(Qt::AlignCenter);  // Center the checkbox
     layoutCheckBox->setContentsMargins(0,0,0,0);    // Set the zero padding
     /* Check on the status of odd if an odd device,
       * exhibiting state of the checkbox in the Checked, Unchecked otherwise
       * */

      if(state == 1){
          checkBox->setChecked(true);
      } else {
          checkBox->setChecked(false);
      }
      ui->job_table_view->setCellWidget(row_number,column_number, checkBoxWidget);


     // Another way to add check box as item
    /*

   // QTableWidgetItem *checkBoxItem = new QTableWidgetItem("checkbox string ");
    QTableWidgetItem *checkBoxItem = new QTableWidgetItem();
    checkBoxItem->setFlags(Qt::ItemIsUserCheckable | Qt::ItemIsEnabled);
    checkBoxItem->setCheckState(Qt::Checked);
    ui->job_table_view->setItem(row_number,column_number,checkBoxItem);

    */
}

//次のように呼び出します

addCheckBoxAt(0,0,1);  // insert checkbox it 0,0 and check status true
0
user889030