我正在尝试使用QSS来自定义工具提示的外观,它有效。但是,如果我尝试使用 QToolTip::showText 函数显示工具提示,它将无法按预期工作,这意味着 QToolTip 样式表可能不适用于它?
我的目的是:更改滑块值时,我想在滑块附近的某个地方显示一个矩形,所以我认为工具提示是最简单的方法? 如果你不明白我的意思,我正在尝试让Qt中的滑块感觉像Windows 10 UWP,所以如果你想理解我的意思,请查看Windows中的任何滑块,例如转到设置->系统->声音,看看他们的滑块是如何工作的。我已经完成了他们拥有的所有内容,除了那个显示值何时更改的矩形。
我想做什么:
在样式表中
QToolTip
{
color: red;
}
在我的自定义滑块类中(继承自 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));
}
感谢您的阅读!
起初我在Qt 5.12.2上遇到了同样的问题。我错过了第三个论点QToolTip::showText
.我不得不添加父小部件。在这种情况下,我应用于工具提示的 CSSmainwindow.ui
应用于QToolTip
.如果没有父级,它是一个单独的窗口,显示在指定的位置上,并且不知道 css。