有没有一种方法可以将
QCheckBox
作为QTableWidget
单元格小部件放置在单元格的中心位置,而不是左侧,而不需要其他的QWidget
并将复选框添加到其布局中?QCheckBox
作为QTableWidget
单元格小部件放置在单元格的中心位置,而不是左侧,而不需要其他的QWidget
并将复选框添加到其布局中?使用setCellWidget
将QCheckBox添加到表中:
QWidget *checkBoxWidget = new QWidget(); //create QWidget
QCheckBox *checkBox = new QCheckBox(); //create QCheckBox
QHBoxLayout *layoutCheckBox = new QHBoxLayout(checkBoxWidget); //create QHBoxLayout
layoutCheckBox->addWidget(checkBox); //add QCheckBox to layout
layoutCheckBox->setAlignment(Qt::AlignCenter); //set Alignment layout
layoutCheckBox->setContentsMargins(0,0,0,0);
ui->tableWidget->setCellWidget(0,0, checkBoxWidget);
同时使用以下代码调整内容大小:
ui->tableWidget->resizeRowsToContents();
ui->tableWidget->resizeColumnsToContents();
setCellWidget:在指定的行和列中设置给定的小部件以显示,并将小部件所有权传递给表格。
如果您想要使用 ui->tableWidget->resizeColumnsToContents()
,我有一个简单的解决方案,无需任何额外的布局:
使用 checkBox->setStyleSheet( "text-align: center; margin-left:50%; margin-right:50%;" );
在此之后,调用 ui->tableWidget->resizeColumnsToContents()
。
如果该列在此之后被调整大小(例如表格由布局调整大小),则可能需要再次调用 ui->tableWidget->resizeColumnsToContents()
。
如果小部件在确定结果列宽度之前放置,则会保留其(错误的)位置。使用 resizeColumnsToContents() 可以重新定位它。
QCheckBox
的问题,而且不使用额外的QWidget
作为QCheckBox
的父级。虽然我还没有找到更好的解决办法。 - Mike Finch