【发布时间】:2020-09-11 06:03:57
【问题描述】:
我希望 QSlider 的工具提示在 QT C++ 中显示鼠标移动时滑块的当前值
【问题讨论】:
-
到目前为止你尝试过什么?请提供一些可以讨论的代码。
我希望 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, &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
});
QSlider::sliderMoved() 信号连接到将当前值设置为工具提示的槽(以 lambda 形式提供)。
为此,可以使用QSlider::setToolTip() 函数(继承自QWidget)。使用它时,我发现了一个恼人的延迟(我记得我自己的项目中如何解决它)。
改用QToolTip::showText() 可以提供更好的外观。
请注意,我更喜欢 QSlider::sliderMoved() 而不是 QSlider::valueChanged()。后者被称为滑块的任何变化(即使是那些不是由用户交互产生的),而前者被专门称为
当sliderDown 为真并且滑块移动时。这通常发生在用户拖动滑块时。
进一步阅读:
【讨论】: