首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Qt表项中定位QIcon?

如何在Qt表项中定位QIcon?
EN

Stack Overflow用户
提问于 2018-10-03 03:13:32
回答 1查看 1.1K关注 0票数 2

我想要一个表格单元格,它的文本对左对齐,图标对齐右边。

但是现在,我把图标和文本放在一起,这是我尝试过的

代码语言:javascript
复制
QtTableWidgetItem * item = new QtTableWidgetItem("program");
item -> setIcon(icon);
ui -> tableWidget -> setItem(i,j,item);
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-10-03 03:48:16

要管理图标和文本的位置,必须使用委托,在这种情况下,我使用QStyledItemDelegate并覆盖initStyleOption()方法:

C++版本

aligndelegate.h

代码语言:javascript
复制
#ifndef ALIGNDELEGATE_H
#define ALIGNDELEGATE_H

#include <QStyledItemDelegate>

class AlignDelegate: public QStyledItemDelegate{
public:
    using QStyledItemDelegate::QStyledItemDelegate;
protected:
    void initStyleOption(QStyleOptionViewItem *option, const QModelIndex &index) const override
    {
        QStyledItemDelegate::initStyleOption(option, index);
        option->decorationPosition = QStyleOptionViewItem::Right;
    }
};

#endif // ALIGNDELEGATE_H

然后在代表中设立:

代码语言:javascript
复制
AlignDelegate *delegate = new AlignDelegate(ui->tableWidget);
ui->tableWidget->setItemDelegate(delegate);

QTableWidgetItem *item = new QTableWidgetItem("foo text");
item->setIcon(icon);
ui->tableWidget->setItem(i, j, item);

Python版本:

代码语言:javascript
复制
class AlignDelegate(QtWidgets.QStyledItemDelegate):
    def initStyleOption(self, option, index):
        super().initStyleOption(option, index)
        option.decorationPosition = QtWidgets.QStyleOptionViewItem.Right
代码语言:javascript
复制
delegate = AlignDelegate(view)
view.setItemDelegate(delegate)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52619196

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档