我希望有一个表格单元格有只是一个图标没有任何文本。

我看到QTableWidgetItem类必须对齐文本(int QTableWidgetItem::textAlignment () const)的方法

我觉得没有办法调整图标的位置(这似乎粘在左边得到 - 即便是在有牢房内没有文字)

看状况与能源列。

“替代文字”

有帮助吗?

解决方案

您可以影响相对于通过样式选项的文本图标的位置。

如果没有任何文本(通过不接受文本参数的构造)构造的QTableWidgetItem,然后Qt的:: DisplayRole数据项没有被设置,文本将不被显示,也不会影响显示的图标矩形

我能够通过继承QTableWidget的,覆盖viewOptions方法和设置在 decorationAlignment 的视图选项字段,这样影响QTableWidgetItem的图标的位置:

QStyleOptionViewItem MyTableWidget::viewOptions() const
{
    QStyleOptionViewItem option = QTableWidget::viewOptions();
    option.decorationAlignment = Qt::AlignHCenter | Qt::AlignCenter;
    option.decorationPosition = QStyleOptionViewItem::Top;
    ...
    return option;
}

其他提示

我有一个类似的问题,我解决它没有子分级通过使用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);

我用下面的方法:点击 HTTP ://falsinsoft.blogspot.de/2013/11/qtablewidget-center-checkbox-inside-cell.html

我认为这是QTableWidgetItem的基本行为是不允许你改变相关的图标什么...

看一看从Qt的例子中的“明星代表示例”,也许你会发现一些有趣的事情对您的问题!这是工作的一点点,但你应该能够以不同的方式时,它不包含任何文本“画”单元!

希望这有点帮助!

您可以使用:setCellWidget,如下:

QLabel *lbl_item = new QLabel();
lbl_item ->setPixmap(*ui->my_label->pixmap());
lbl_item ->setAlignment(Qt::AlignHCenter);
ui->my_tablewidget->setCellWidget(row, column, lbl_item);

这将使图标在中心

看来你必须继承QTableWidgetItem并在重写 paintEvent 功能你就能画出你想要的图标。

您需要使用一个委托

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top