QT QTableView添加QCheckBox并且居中显示。

1. 对视图设置

QTableView->horizontalHeader()->setSectionResizeMode(0, QHeaderView::Fixed); //对第0列单独设置固定宽度
QTableView->setColumnWidth(0, 40);                                           //设置固定宽度

2. 在视图中某一列添加控件

for (int i = 0; i < Row.size(); i++)
{
	for (int j = 0; j < 11; j++)
	{
		switch(j)
		{
			case CHECK:
			{
				// QWidget
			    QWidget     *CheckWidget = new QWidget;					
			    // QHBoxLayout - new QHBoxLayout(QWidget)表示删除Widget时不需要管布局和控件
			    QHBoxLayout *CheckLayout = new QHBoxLayout(CheckWidget); 
			    // QCheckBox
			    QCheckBox   *CheckBox    = new QCheckBox(CheckWidget);
			
			    CheckWidget->setLayout(CheckLayout);                 //   给Widget设置布局
			
			    CheckLayout->setSpacing(0);
			    CheckLayout->setMargin(0);
			    CheckLayout->addWidget(CheckBox);                    //   添加CheckBox
			    CheckLayout->setAlignment(CheckBox, Qt::AlignCenter);//   设置控件在布局中居中
			
			    this->mCheckBoxVec.append(CheckWidget);              //   添加到容器-更新页面时删除
				
				// 首次循环时 i = 0;			// 行数
				// 首次循环时 CHECK=1;		// 列数
			    mTableView->setIndexWidget(mStandardModel->index(i,CHECK),CheckWidget);
			
			    /*
			    // 视图所属checkbox,但是使用这段代码时(使用时,需要将上边未注释的代码都注释掉),checkbox无法控制居中
			    QStandardItem *checkbox = new QStandardItem();
			    checkbox->setCheckable(true);
			    checkbox->setCheckState(Qt::Unchecked);
			    checkbox->setTextAlignment(ITEMSHOWFORMAT);
			    mItem.append(checkbox);
			    mStandardModel->setItem(i, CHECK ,mItem[WindowTableWidget::mItemIndex]);
			    WindowTableWidget::mItemIndex++;
			    */
			    break;
			}
			case ······
			{
			}
		}
	}
}

3. 上述代码添加进视图后,在更新视图时,需要删除设置的Qwidget

// 我的删除方法
if(!this->mCheckBoxVec.isEmpty()) // CheckBox Widget Vec
{
    // 尝试删除
    qDebug() << "尝试删除 Check Box Vec." << endl;
    qDeleteAll(this->mCheckBoxVec);
}
this->mCheckBoxVec.clear();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值