自学内容网 自学内容网

默认情况下,`QTableView`中的单元格内容是不支持自动换行的,而是将文本截断或者显示省略号。要实现内容自动换行。要用Delegate

迅雷demo
链接:https://pan.xunlei.com/s/VO8lJGf-bokGg8VVVKUwiF1AA1?pwd=xxce#
复制这段内容后打开手机迅雷App,查看更方便

#include <QStyledItemDelegate>

class WrapDelegate : public QStyledItemDelegate
{
    Q_OBJECT
public:
    WrapDelegate(QObject * parent  = 0);
    ~WrapDelegate();
    void paint(QPainter *painter, const QStyleOptionViewItem & option,
               const QModelIndex & index) const override;
};

重新这里的paint


void WrapDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const
{
    auto text = index.model()->data(index, Qt::DisplayRole).toString();
    //注意,这里必须用TextWrapAnywhere!  TextWordWrap无效
    painter->drawText(option.rect, Qt::TextWrapAnywhere | Qt::AlignVCenter, text);
}

使用方法


  auto pTable = new QTableView;
    pTable->setModel(&m_model);

    auto pDelegate0 = new WrapDelegate();
    auto pDelegate1 = new WrapDelegate();
    auto pDelegate2 = new WrapDelegate();
    pTable->setItemDelegateForColumn(0, pDelegate0);
    pTable->setItemDelegateForColumn(1, pDelegate1);
    pTable->setItemDelegateForColumn(2, pDelegate2);

原文地址:https://blog.csdn.net/sunflower_2020/article/details/142796077

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!