QWidget * w = new QWidget();
QHBoxLayout *l = new QHBoxLayout();
l->setAlignment( Qt::AlignCenter );
l->addWidget( <add your checkbox here> );
w->setLayout( l );
ui->data_table->setCellWidget(rowCount,0, w);
// Create a widget that will contain a checkbox
QWidget *checkBoxWidget = new QWidget();
QCheckBox *checkBox = new QCheckBox(); // We declare and initialize the checkbox
QHBoxLayout *layoutCheckBox = new QHBoxLayout(checkBoxWidget); // create a layer with reference to the widget
layoutCheckBox->addWidget(checkBox); // Set the checkbox in the layer
layoutCheckBox->setAlignment(Qt::AlignCenter); // Center the checkbox
layoutCheckBox->setContentsMargins(0,0,0,0); // Set the zero padding
ui->my_table_view->setCellWidget(row_number,column_number, checkBoxWidget); // set cell widget
8条答案
按热度按时间7d7tgy0s1#
为巴里·Maven竖起两个大拇指!你甚至不需要子类化。
一条线
字符串
done!!
7uzetpgm2#
我通常使用一个布局和一个容器小部件。这是一个丑陋的解决方案,但它有效:
字符串
所以基本上你会有:
型
如果您需要通过表格访问复选框,则必须考虑它。
6pp0gazn3#
这是一个老帖子,但实际上有一个更简单和更轻松的方法来实现这一点,只需子类
QCheckBox
并将stylesheet
设置为字符串
ubof19bj4#
它对我有效,但我的复选框没有完全显示。
要获得小部件的完整视图,请删除布局中的边距:
setContentsMargins(0,0,0,0);
v7pvogib5#
正如在Stack Overflow的类似问题中所述,它目前是一个开放的BUG:
https://bugreports.qt-project.org/browse/QTBUG-5368
ozxc1zmp6#
如果想要添加更多的定制,也可以使用布局来像这样居中
字符串
或者简单地添加左右边距
型
2ic8powd7#
字符串
fae0ux8s8#
对于常规的数据行,您可以调整模型,测试数据方法中的角色。这似乎对我很有效:
字符串
然而,这并没有得到解决的标题-所以如果你有一个复选框(如选择所有)的标题,这将不会得到解决。但这至少解决了对齐的数据问题。