From cdcc0fb3695d75e781053f9feda6b6b91a08ea86 Mon Sep 17 00:00:00 2001 From: Dean Lee Date: Mon, 7 Nov 2022 03:06:10 +0800 Subject: [PATCH] Cabana: Reimplement HistoryLog::sizeHintForColumn to improve performance (#26393) Reimplement sizeHintForColumn to improve performance --- tools/cabana/historylog.cc | 6 +++++- tools/cabana/historylog.h | 3 ++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/tools/cabana/historylog.cc b/tools/cabana/historylog.cc index 7bb2f37699..4b1818cf68 100644 --- a/tools/cabana/historylog.cc +++ b/tools/cabana/historylog.cc @@ -1,7 +1,6 @@ #include "tools/cabana/historylog.h" #include -#include // HistoryLogModel @@ -89,3 +88,8 @@ HistoryLog::HistoryLog(QWidget *parent) : QTableView(parent) { setSizePolicy(QSizePolicy::Preferred, QSizePolicy::MinimumExpanding); setStyleSheet("QTableView::item { border:0px; padding-left:5px; padding-right:5px; }"); } + +int HistoryLog::sizeHintForColumn(int column) const { + // sizeHintForColumn is only called for column 0 (ResizeToContents) + return itemDelegate()->sizeHint(viewOptions(), model->index(0, 0)).width() + 1; // +1 for grid +} diff --git a/tools/cabana/historylog.h b/tools/cabana/historylog.h index e1c1319166..e8b0f5a35b 100644 --- a/tools/cabana/historylog.h +++ b/tools/cabana/historylog.h @@ -9,7 +9,7 @@ class HeaderView : public QHeaderView { public: HeaderView(Qt::Orientation orientation, QWidget *parent = nullptr) : QHeaderView(orientation, parent) {} - QSize sectionSizeFromContents(int logicalIndex) const; + QSize sectionSizeFromContents(int logicalIndex) const override; }; class HistoryLogModel : public QAbstractTableModel { @@ -40,5 +40,6 @@ public: void setMessage(const QString &message_id) { model->setMessage(message_id); } void updateState() { model->updateState(); } private: + int sizeHintForColumn(int column) const override; HistoryLogModel *model; };