QTableWidget去掉虚框

ui.tableWidget->setFocusPolicy(Qt::NoFocus);或设置样式

QXXX:focus{outline: none;}

这样列中就没有那个框虚线了

虚框是去掉了,但是checkbox不能居中:

QTableWidgetItem* checkItem = new QTableWidgetItem();

checkItem->setTextAlignment(Qt::AlignHCenter | Qt::AlignVCenter);// (Qt::AlignHCenter | Qt::AlignVCenter);

checkItem->setCheckState(Qt::Checked);

ui.tableWidget_CAN->setItem(rowCount, 0, checkItem);

checkItem->setFlags(checkItem->flags()& (~Qt::ItemIsEditable));

setTextAlignment没有效果,看来还是要自己建,把上面代码注释掉,不要了

换成代码:

QCheckBox* checkB = new QCheckBox(this); //创建checkbox

checkB->setCheckState(Qt::Checked); //设置状态

checkB->setStyleSheet("QCheckBox::indicator {width: 20px; height: 20px;}\

QCheckBox::indicator:unchecked {image:url(:/images/unchecked.png);}\

QCheckBox::indicator:checked{image:url(:/images/checked.png);}");

QWidget* w = new QWidget(this); //创建一个widget

QHBoxLayout* hLayout = new QHBoxLayout(); //创建布局

hLayout->addWidget(checkB); //添加checkbox

hLayout->setMargin(0); //设置边缘距离 否则会很难看

hLayout->setAlignment(checkB, Qt::AlignCenter); //居中

w->setLayout(hLayout); //设置widget的布局

ui.tableWidget_CAN->setCellWidget(rowCount, 0, w);

响应事件也要更改:

Qt::CheckState state;

//state = ui.tableWidget_CAN->item(i, 0)->checkState();

QWidget* w = ui.tableWidget_CAN->cellWidget(i, 0);//先获取widget

QCheckBox* checkBox = qobject_cast<QCheckBox*>(w->children().at(1)); //通过children来访问checkbox

if (checkBox)

state = (checkBox->checkState());

else

state = Qt::Unchecked;

//把之前的state = ui.tableWidget_CAN->item(i, 0)->checkState();注释掉,不要了

🆗搞定,全部选中:

for (int i = 0; i < rowCount; i++)

{

//QTableWidgetItem * Item = ui.tableWidget_CAN->item(i, 0);

//Item->setCheckState( Qt::Checked);//: Qt::Unchecked

QWidget* w = ui.tableWidget_CAN->cellWidget(i, 0);//先获取widget

QCheckBox* checkBox = qobject_cast<QCheckBox*>(w->children().at(1)); //通过children来访问checkbox

checkBox->setCheckState(Qt::Checked);//: Qt::Unchecked

}

哈哈,QT真好用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值