Таблица стилей QToolTip не работает, если используется QToolTip :: showText - PullRequest
0 голосов
/ 05 июля 2018

Я пытаюсь использовать 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));
}

Спасибо за чтение!

...