diff --git a/src/libs/utils/tooltip/tips.cpp b/src/libs/utils/tooltip/tips.cpp index b0aee273f4d..d38259518da 100644 --- a/src/libs/utils/tooltip/tips.cpp +++ b/src/libs/utils/tooltip/tips.cpp @@ -46,24 +46,41 @@ namespace Utils { namespace Internal { -QTipLabel::QTipLabel(QWidget *parent) : +TipLabel::TipLabel(QWidget *parent) : QLabel(parent, Qt::ToolTip | Qt::BypassGraphicsProxyWidget) -{} +{ +} -void QTipLabel::setHelpId(const QString &id) +void TipLabel::setHelpId(const QString &id) { m_helpId = id; update(); } -QString QTipLabel::helpId() const +QString TipLabel::helpId() const { return m_helpId; } +const QMetaObject *TipLabel::metaObject() const +{ + // CSS Tooltip styling depends on a the name of this class. + // So set up a minimalist QMetaObject to fake a class name "QTipLabel": + static const uint tip_label_meta_data[15] = { 8 /* moc revision */ }; + static const QMetaObject tipMetaObject { + &QLabel::staticMetaObject, + QByteArrayLiteral("QTipLabel").data_ptr(), + tip_label_meta_data, + nullptr, + nullptr, + nullptr + }; + + return &tipMetaObject; +} ColorTip::ColorTip(QWidget *parent) - : QTipLabel(parent) + : TipLabel(parent) { resize(40, 40); } @@ -101,7 +118,7 @@ bool ColorTip::equals(int typeId, const QVariant &other, const QString &otherHel void ColorTip::paintEvent(QPaintEvent *event) { - QTipLabel::paintEvent(event); + TipLabel::paintEvent(event); QPainter painter(this); painter.setBrush(m_color); @@ -115,7 +132,7 @@ void ColorTip::paintEvent(QPaintEvent *event) painter.drawRect(borderRect); } -TextTip::TextTip(QWidget *parent) : QTipLabel(parent) +TextTip::TextTip(QWidget *parent) : TipLabel(parent) { setForegroundRole(QPalette::ToolTipText); setBackgroundRole(QPalette::ToolTipBase); @@ -210,7 +227,7 @@ void TextTip::resizeEvent(QResizeEvent *event) } WidgetTip::WidgetTip(QWidget *parent) : - QTipLabel(parent), m_layout(new QVBoxLayout) + TipLabel(parent), m_layout(new QVBoxLayout) { m_layout->setContentsMargins(0, 0, 0, 0); setLayout(m_layout); @@ -267,8 +284,5 @@ bool WidgetTip::equals(int typeId, const QVariant &other, const QString &otherHe && other.value() == m_widget; } -// need to include it here to force it to be inside the namespaces -#include "moc_tips.cpp" - } // namespace Internal } // namespace Utils diff --git a/src/libs/utils/tooltip/tips.h b/src/libs/utils/tooltip/tips.h index 844848e7965..764e10eb8ae 100644 --- a/src/libs/utils/tooltip/tips.h +++ b/src/libs/utils/tooltip/tips.h @@ -33,17 +33,13 @@ #include #include -#ifndef Q_MOC_RUN namespace Utils { namespace Internal { -#endif -// Please do not change the name of this class. Detailed comments in tooltip.h. -class QTipLabel : public QLabel +class TipLabel : public QLabel { - Q_OBJECT public: - QTipLabel(QWidget *parent); + TipLabel(QWidget *parent); virtual void setContent(const QVariant &content) = 0; virtual bool isInteractive() const { return false; } @@ -54,11 +50,14 @@ public: virtual void setHelpId(const QString &id); virtual QString helpId() const; +protected: + const QMetaObject *metaObject() const override; + private: QString m_helpId; }; -class TextTip : public QTipLabel +class TextTip : public TipLabel { public: TextTip(QWidget *parent); @@ -76,7 +75,7 @@ private: QString m_text; }; -class ColorTip : public QTipLabel +class ColorTip : public TipLabel { public: ColorTip(QWidget *parent); @@ -93,7 +92,7 @@ private: QPixmap m_tilePixmap; }; -class WidgetTip : public QTipLabel +class WidgetTip : public TipLabel { Q_OBJECT @@ -113,7 +112,5 @@ private: QVBoxLayout *m_layout; }; -#ifndef Q_MOC_RUN } // namespace Internal } // namespace Utils -#endif diff --git a/src/libs/utils/tooltip/tooltip.h b/src/libs/utils/tooltip/tooltip.h index ece289b66b4..d78623b41ff 100644 --- a/src/libs/utils/tooltip/tooltip.h +++ b/src/libs/utils/tooltip/tooltip.h @@ -50,7 +50,7 @@ class QWidget; QT_END_NAMESPACE namespace Utils { -namespace Internal { class QTipLabel; } +namespace Internal { class TipLabel; } class QTCREATOR_UTILS_EXPORT ToolTip : public QObject { @@ -110,7 +110,7 @@ private: void showTip(); void hideTipWithDelay(); - QPointer m_tip; + QPointer m_tip; QWidget *m_widget; QRect m_rect; QTimer m_showTimer;