【Qt】在QTableWidget中添加QCheckBox并使其居中显示【2012-11-21更新】

实现思路:把QCheckBox嵌入式到一个水平布局中

 1 QWidget *widget;
 2 QHBoxLayout *hLayout;
 3 QCheckBox *ckb;
 4 ...
 5 ckb = new QCheckBox();
 6 hLayout = new QHBoxLayout();
 7 widget = new QWidget(ui->tableWidget);
 8 hLayout->addWidget(ckb);
 9 hLayout->setMargin(0);                          // 必须添加, 否则CheckBox不能正常显示
10 hLayout->setAlignment(ckb, Qt::AlignCenter);
11 widget->setLayout(hLayout);
12 ...
13 ui->tableWidget->setCellWidget(row, column, widget);

 

获取CheckBox的指针的方法

1 QWidget *widget = (QWidget *)ui->tableWidget->cellWidget(row, column);
2 QCheckBox *ckb = (QCheckBox *)widget->children().at(1);
3 ckb->setChecked(true);
4 ...

 

备注:
    可使用 qDebug() << widget->children(); 输出widget的child列表
    从而判断CheckBox的index

 

posted @ 2012-11-21 16:41  it-mac  阅读(10885)  评论(0编辑  收藏  举报