Я пытаюсь использовать 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));
}
Спасибо за прочтение !
Задача ещё не решена.
Других решений пока нет …