diff options
Diffstat (limited to 'src/ui/widgets')
-rw-r--r-- | src/ui/widgets/GRTTreeView.cpp | 26 | ||||
-rw-r--r-- | src/ui/widgets/GRTTreeView.h | 30 |
2 files changed, 54 insertions, 2 deletions
diff --git a/src/ui/widgets/GRTTreeView.cpp b/src/ui/widgets/GRTTreeView.cpp index f2ae42c2..09d7dcf0 100644 --- a/src/ui/widgets/GRTTreeView.cpp +++ b/src/ui/widgets/GRTTreeView.cpp @@ -33,10 +33,34 @@ namespace GpgFrontend::UI { -GRTTreeView::GRTTreeView(QWidget *parent) : QTreeView(parent) { +GRTTreeView::GRTTreeView(QWidget* parent) : QTreeView(parent) { setModel(new Module::GlobalRegisterTableTreeModel( Module::ModuleManager::GetInstance().GRT())); + + connect(model(), &QFileSystemModel::layoutChanged, this, + &GRTTreeView::slot_adjust_column_widths); + connect(model(), &QFileSystemModel::dataChanged, this, + &GRTTreeView::slot_adjust_column_widths); + connect(this, &GRTTreeView::expanded, this, + &GRTTreeView::slot_adjust_column_widths); + connect(this, &GRTTreeView::collapsed, this, + &GRTTreeView::slot_adjust_column_widths); } GRTTreeView::~GRTTreeView() = default; + +void GRTTreeView::paintEvent(QPaintEvent* event) { + QTreeView::paintEvent(event); + + if (!initial_resize_done_) { + slot_adjust_column_widths(); + initial_resize_done_ = true; + } +} + +void GRTTreeView::slot_adjust_column_widths() { + for (int i = 0; i < model()->columnCount(); ++i) { + this->resizeColumnToContents(i); + } +} } // namespace GpgFrontend::UI
\ No newline at end of file diff --git a/src/ui/widgets/GRTTreeView.h b/src/ui/widgets/GRTTreeView.h index e730b698..6f3f83c8 100644 --- a/src/ui/widgets/GRTTreeView.h +++ b/src/ui/widgets/GRTTreeView.h @@ -33,9 +33,37 @@ namespace GpgFrontend::UI { class GRTTreeView : public QTreeView { Q_OBJECT public: - explicit GRTTreeView(QWidget *parent); + /** + * @brief Construct a new GRTTreeView object + * + * @param parent + */ + explicit GRTTreeView(QWidget* parent); + /** + * @brief Destroy the GRTTreeView object + * + */ virtual ~GRTTreeView() override; + + protected: + /** + * @brief + * + * @param event + */ + void paintEvent(QPaintEvent* event) override; + + private slots: + + /** + * @brief + * + */ + void slot_adjust_column_widths(); + + private: + bool initial_resize_done_ = false; }; } // namespace GpgFrontend::UI
\ No newline at end of file |