QTableWidget,居中cellWidgets
QTableWidget, centering cellWidgets
有没有办法将 QCheckBox
作为 QTableWidget
的单元格小部件放置在单元格的中心,而不是左侧,而不需要额外的 QWidget
和添加复选框它的布局?
使用setCellWidget
将QCheckBox添加到table:
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: Sets the given widget to be displayed in the cell
in the given row and column, passing the ownership of the widget to
the table.
如果你想使用ui->tableWidget->resizeColumnsToContents()
:
,我有一个简单的解决方案,没有任何额外的布局
使用checkBox->setStyleSheet( "text-align: center; margin-left:50%; margin-right:50%;" );
在此之后,致电ui->tableWidget->resizeColumnsToContents()
。
如果在此之后调整列的大小(例如 table 通过布局调整大小),您可能需要再次调用 ui->tableWidget->resizeColumnsToContents()
。
如果在知道结果列宽之前放置小部件,它会保留其(错误的)位置。使用 resizeColumnsToContents() 重新定位它。
有没有办法将 QCheckBox
作为 QTableWidget
的单元格小部件放置在单元格的中心,而不是左侧,而不需要额外的 QWidget
和添加复选框它的布局?
使用setCellWidget
将QCheckBox添加到table:
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: Sets the given widget to be displayed in the cell in the given row and column, passing the ownership of the widget to the table.
如果你想使用ui->tableWidget->resizeColumnsToContents()
:
使用checkBox->setStyleSheet( "text-align: center; margin-left:50%; margin-right:50%;" );
在此之后,致电ui->tableWidget->resizeColumnsToContents()
。
如果在此之后调整列的大小(例如 table 通过布局调整大小),您可能需要再次调用 ui->tableWidget->resizeColumnsToContents()
。
如果在知道结果列宽之前放置小部件,它会保留其(错误的)位置。使用 resizeColumnsToContents() 重新定位它。