我希望表格单元格只有一个没有任何文字的图标.
我看到QTableWidgetItem该类有一个方法来对齐文本(int QTableWidgetItem::textAlignment () const)
我发现无法调整图标的位置(似乎卡在左侧 - 即使单元格中没有文字)
查看Status和Energy列.
您可以通过样式选项影响图标相对于文本的位置.
如果构造的QTableWidgetItem没有任何文本(通过不接受文本参数的构造函数),则不会设置Qt :: DisplayRole数据项,也不会显示文本,也不会影响图标显示矩形.
我能够通过继承QTableWidget来影响QTableWidgetItem图标的位置,覆盖viewOptions方法并设置视图选项的decorationAlignment字段,如下所示:
QStyleOptionViewItem MyTableWidget::viewOptions() const
{
QStyleOptionViewItem option = QTableWidget::viewOptions();
option.decorationAlignment = Qt::AlignHCenter | Qt::AlignCenter;
option.decorationPosition = QStyleOptionViewItem::Top;
...
return option;
}
Run Code Online (Sandbox Code Playgroud)
小智 6
我有一个类似的问题,我通过使用QLabel作为cellwidget而无需子类化解决了它
(遗憾的是我也需要使用布局):
int row = 0;
int column = 0;
QSize sizeIcon(32, 32);
QString iconSrc = ":/Actions/myicon.png";
QWidget *pWidget = new QWidget();
QLabel *label = new QLabel;
label->setMaximumSize(sizeIcon);
label->setScaledContents(true);
label->setPixmap(QPixmap(iconSrc));
QHBoxLayout *pLayout = new QHBoxLayout(pWidget);
pLayout->addWidget(label);
pLayout->setAlignment(Qt::AlignCenter);
pLayout->setContentsMargins(0,0,0,0);
pWidget->setLayout(pLayout);
this->ui->myTableWidget->setCellWidget(row, column, pWidget);
Run Code Online (Sandbox Code Playgroud)
我使用了以下方法:http:
//falsinsoft.blogspot.de/2013/11/qtablewidget-center-checkbox-inside-cell.html