有没有办法将QCheckBox
作为QTableWidget
的单元格窗口小部件放置在单元格的中心,而不是左侧,而不添加QWidget
并将复选框添加到其中#39;布局?
答案 0 :(得分:2)
使用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:设置要在单元格中显示的给定窗口小部件 在给定的行和列中,将窗口小部件的所有权传递给 桌子。
答案 1 :(得分:0)
如果您想使用ui->tableWidget->resizeColumnsToContents()
,我有一个简单的解决方案,没有任何其他布局:
使用checkBox->setStyleSheet( "text-align: center; margin-left:50%; margin-right:50%;" );
此后,致电ui->tableWidget->resizeColumnsToContents()
。
如果此后调整了列的大小(例如,表格通过布局调整了大小),则可能必须再次调用ui->tableWidget->resizeColumnsToContents()
。
在知道结果的列宽之前将其放置在小部件上,并保持其(错误的)位置。使用resizeColumnsToContents()可以重新放置它。