如何以这种方式对齐qtreewidget列中的文本:“... qtreewidgetitemdata”而不是“qtreewidgetitemdata ...”?

问题描述 投票:1回答:1

如何以这种方式对齐qtreewidget的第1列中的数据:

|Column1 |Column2|
|+...abcd|efgh   |
|+...ijkl|mnop   |

代替

|Column1 |Column2|
|+xyab...|efgh   |
|+pqij...|mnop   |
c++ qt qtreewidget
1个回答
1
投票

您必须使用委托建立elide模式:

#include <QtWidgets>

class ElideLeftDelegate: public QStyledItemDelegate
{
public:
    using QStyledItemDelegate::QStyledItemDelegate;
protected:
    void initStyleOption(QStyleOptionViewItem *option, const QModelIndex &index) const{
        QStyledItemDelegate::initStyleOption(option, index);
        option->textElideMode = Qt::ElideLeft;
    }
};

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QTreeWidget w;
    w.setItemDelegateForColumn(0, new ElideLeftDelegate{&w});
    w.setColumnCount(2);
    new QTreeWidgetItem(&w, {"abcdefghijklmnopqrdstuvwxyz", "AVCDEFGHIJKLMNOPQRSTUVWXYZ"});
    new QTreeWidgetItem(&w, {"AVCDEFGHIJKLMNOPQRSTUVWXYZ", "abcdefghijklmnopqrdstuvwxyz"});
    w.show();
    return a.exec();
}

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.