如果使用QToolTip :: showText,则QToolTip样式表不起作用

时间:2018-07-05 20:46:02

标签: c++ qt qt5 qtstylesheets qtooltip

我正在尝试使用QSS自定义工具提示的外观,它可以正常工作。但是,如果我尝试使用QToolTip :: showText函数显示工具提示,它将无法按预期工作,这意味着QToolTip样式表可能不适用于它?

我的目的:更改滑块值时,我想在滑块附近的某个地方显示一个矩形,所以我认为工具提示是最简单的方法? 如果您不明白我的意思,我想尝试使Qt中的滑块看起来像Windows 10 UWP,因此,如果您想了解我的意思,例如,查看Windows中的任何滑块,例如,转到“设置”->“系统”->“声音”并查看其滑块的工作原理。我已经完成了他们所拥有的一切,除了显示值何时更改的矩形。

我要做什么:

在样式表中

QToolTip
{
color: red;
}

在我的自定义Slider类中(从QSlider继承)

class FSlider : public QSlider
{
    Q_OBJECT
public:
    FSlider(QWidget *parent = 0) : QSlider(parent) { connect(this, SIGNAL(valueChanged(int)), this, SLOT(notifyValueChanged(int))); }
protected:
    void mousePressEvent(QMouseEvent* event);
    void mouseReleaseEvent(QMouseEvent* event);
    bool event(QEvent* event);

private slots:
    void notifyValueChanged(int Value);
};

void FSlider::notifyValueChanged(int Value)
{
    QStyleOptionSlider opt;
    initStyleOption(&opt);
    QRect sliderHandle = style()->subControlRect(QStyle::CC_Slider, &opt, QStyle::SC_SliderHandle);
    QToolTip::setFont(QFont("Segoe UI", 13, 400));
    QToolTip::showText(mapToGlobal(QPoint(sliderHandle.x() - sliderHandle.width() - 2, sliderHandle.y() - sliderHandle.height() - 30)), QString::asprintf("%i", Value));
}

感谢阅读!

1 个答案:

答案 0 :(得分:0)

起初,我在Qt 5.12.2中遇到了相同的问题。我错过了QToolTip::showText的第三个参数。我必须添加父窗口小部件。在那种情况下,我在mainwindow.ui中应用于工具提示的CSS也应用于QToolTip。没有父级,它将是一个单独的窗口,显示在指定位置,并且不了解css。