如何解决如何在鼠标移动时将ToolTip添加到QSlider
我想要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且滑块移动时。这通常在用户拖动滑块时发生。
进一步阅读:
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。