写点什么

C++ 中怎么判断 Qtableview 一行满了自动换行

作者:linux大本营
  • 2023-04-27
    湖南
  • 本文字数:511 字

    阅读完需:约 2 分钟

在 C++中,QTableView 默认是单行显示的,因此需要进行一些自定义才能实现自动换行的功能。


可以通过继承 QStyledItemDelegate 类并重写 sizeHint()函数来实现:


class WordWrapDelegate : public QStyledItemDelegate {public:    QSize sizeHint(const QStyleOptionViewItem& option, const QModelIndex& index) const override {        // 获取数据        QString text = index.data(Qt::DisplayRole).toString();        // 计算文本所需空间        QTextDocument document;        document.setDefaultFont(option.font);        document.setPlainText(text);        int width = option.rect.width();        int doc_width = document.idealWidth();        if (doc_width > width) {            return QSize(width, document.size().height());        } else {            return QSize(doc_width, document.size().height());        }    }};
复制代码


然后将该代理设置给 QTableView 即可:


tableView->setItemDelegate(new WordWrapDelegate);
复制代码


这样就可以实现 QTableView 自动换行了。


相关技术视频教程:c/c++ linux服务器开发/后台架构师免费学习地址

c/c++后端技术交流群:579733396

用户头像

还未添加个人签名 2020-11-26 加入

C/C++linux服务器开发群 812855908

评论

发布
暂无评论
C++中怎么判断Qtableview一行满了自动换行_c++_linux大本营_InfoQ写作社区