问题描述
我想要QSlider的工具提示显示在QT C ++中鼠标移动时滑块的当前值
解决方法
忽略OP MCVE的缺失…
…我们去:
// Qt header:
#include <QtWidgets>
// main application
int main(int argc,char **argv)
{
qDebug() << "Qt Version:" << QT_VERSION_STR;
QApplication app(argc,argv);
// setup GUI
QSlider qSlider(Qt::Horizontal);
qSlider.setRange(0,100);
qSlider.show();
// install signal handlers
QObject::connect(&qSlider,&QSlider::sliderMoved,[&](int value) {
#if 0 // not so nice -> delayed
qSlider.setToolTip(QString("%1").arg(value));
#else // better
QToolTip::showText(QCursor::pos(),QString("%1").arg(value),nullptr);
#endif // 0
});
// runtime loop
return app.exec();
}
输出:
此MCVE的基本部分是:
QObject::connect(&qSlider,nullptr);
#endif // 0
});
QSlider::sliderMoved()
信号连接到一个插槽(提供为lambda),该插槽将当前值设置为工具提示。
为此,可以使用QSlider::setToolTip()
函数(从QWidget
继承)。使用此功能时,我发现了一个令人讨厌的延迟(我从我自己的项目中记得如何解决该问题)。
使用QToolTip::showText()
可以提供更好的外观。
请注意,相对于QSlider::sliderMoved()
,我更喜欢QSlider::valueChanged()
。后者被要求对滑块进行任何更改(即使不是由用户交互导致的更改),而前者被专门称为
当liderDown为true且滑块移动时。这通常在用户拖动滑块时发生。
进一步阅读: