From 1f9a2e340c5b50aea8b7d4e2687ca3c5e3d993c3 Mon Sep 17 00:00:00 2001 From: baldurk Date: Tue, 21 Nov 2017 18:57:10 +0000 Subject: [PATCH] Add an extra minimum size hint, since Qt behaviour is broken by design * The Qt behaviour is that if you call setMinimumSize on a widget, then the minimumSizeHint is IGNORED. So it is impossible to say "use this minimum size, unless the widget wants a higher minimum size". * So instead we do this ourselves in RDLabel. Sigh. --- qrenderdoc/Widgets/Extended/RDLabel.cpp | 8 ++++++++ qrenderdoc/Widgets/Extended/RDLabel.h | 3 +++ 2 files changed, 11 insertions(+) diff --git a/qrenderdoc/Widgets/Extended/RDLabel.cpp b/qrenderdoc/Widgets/Extended/RDLabel.cpp index ced88fc18..bca64e09a 100644 --- a/qrenderdoc/Widgets/Extended/RDLabel.cpp +++ b/qrenderdoc/Widgets/Extended/RDLabel.cpp @@ -57,6 +57,8 @@ QSize RDLabel::minimumSizeHint() const { QSize sz = QLabel::minimumSizeHint(); modifySizeHint(sz); + if(m_minSizeHint.isValid()) + sz = sz.expandedTo(m_minSizeHint); return sz; } @@ -87,6 +89,12 @@ QString RDLabel::text() const return QLabel::text(); } +void RDLabel::setMinimumSizeHint(const QSize &sz) +{ + m_minSizeHint = sz; + updateGeometry(); +} + void RDLabel::mousePressEvent(QMouseEvent *event) { emit(clicked(event)); diff --git a/qrenderdoc/Widgets/Extended/RDLabel.h b/qrenderdoc/Widgets/Extended/RDLabel.h index df931df55..9e9eb2afd 100644 --- a/qrenderdoc/Widgets/Extended/RDLabel.h +++ b/qrenderdoc/Widgets/Extended/RDLabel.h @@ -39,6 +39,7 @@ public: void setText(const QString &text); QString text() const; + void setMinimumSizeHint(const QSize &sz); void setPreserveAspectRatio(bool preserve) { m_preserveRatio = preserve; } bool preserveAspectRatio() { return m_preserveRatio; } signals: @@ -65,5 +66,7 @@ protected: bool m_preserveRatio = false; bool m_hover = false; + QSize m_minSizeHint; + QVariant m_variant; };