如何向QTableWidget添加复选框/单选按钮

26 c++ qt qt4 qt-creator qtablewidget

如何将复选框/ radiobutton/combobox添加到QTableWidget或QListWidget?

Pie*_*esu 52

有两种方法:

void QTableWidget::setCellWidget ( int row, int column, QWidget * widget )
Run Code Online (Sandbox Code Playgroud)

void QListWidget::setItemWidget ( QListWidgetItem * item, QWidget * widget )
Run Code Online (Sandbox Code Playgroud)

它们允许插入任何继承QWidget的小部件和其他控件.复选框/单选按钮/组合框继承自QWidget.

  • 我同意这是令人困惑的,这不是正确的答案.我没有花很多时间调查,但我认为在QTableWidgetItem上设置checkable标志会出现一个复选框 - 它没有.但是,setCellWidget()工作正常. (6认同)
  • @MohsenPahlevanzadeh:当你可以使用恰当命名的常量时,请避免使用文字数字:[Qt :: CheckState](http://qt-project.org/doc/qt-4.8/qt.html#CheckState-enum).这将使您的代码更易读,更易于维护(常量的实际值可以更改,而无需修改整个代码库以反映更改). (4认同)

ser*_*nko 21

对于使用项目的setCheckState方法的复选框,应该为列表和表格小部件执行所需的操作.看看下面的代码是否适合您:

列表小部件:

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

item0->setCheckState(Qt::Unchecked);
item1->setCheckState(Qt::Checked);
Run Code Online (Sandbox Code Playgroud)

表格小部件:

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

您可以将委托(QItemDelegate)用于其他类型的编辑器小部件,例如:Spin Box Delegate示例.

旋转盒代表

我希望这有帮助.

  • 哇.很惊讶这个评论被选为正确的答案.因为在检查状态下设置QListWidgetItem并不是"向表格添加复选框"或"列表".此外,创建委托不是在表或列表中插入这些小部件的方法.它仅用于编辑单元格. (10认同)
  • 这个答案完全错误.正确答案如下. (2认同)