Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/162.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何在鼠标移动时向QSlider添加工具提示_C++_Qt_Qslider_Qtooltip - Fatal编程技术网

C++ 如何在鼠标移动时向QSlider添加工具提示

C++ 如何在鼠标移动时向QSlider添加工具提示,c++,qt,qslider,qtooltip,C++,Qt,Qslider,Qtooltip,我想让QSlider的工具提示在QT C++中显示鼠标移动时滑块的当前值,忽略缺少一个操作 ……我们开始: // Qt header: #include <QtWidgets> // main application int main(int argc, char **argv) { qDebug() << "Qt Version:" << QT_VERSION_STR; QApplication app(argc, argv);

我想让QSlider的工具提示在QT C++

中显示鼠标移动时滑块的当前值,忽略缺少一个操作

……我们开始:

// 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();
}
QSlider::sliderMoved()
信号连接到一个插槽(提供为lambda),该插槽将当前值设置为工具提示

为此,可以使用
QSlider::setToolTip()
函数(从
QWidget
继承)。当我使用它的时候,我意识到了一个恼人的延迟(我记得我自己的项目是如何修复它的)

相反,使用
QToolTip::showText()
可以提供更好的外观

请注意,我更喜欢
QSlider::sliderMoved()
而不是
QSlider::valueChanged()
。后者用于滑块的任何更改(即使不是由用户交互引起的更改),而前者专门用于

当sliderDown为true且滑块移动时。这通常发生在用户拖动滑块时


进一步阅读:


到目前为止您尝试了什么?请提供一些可以讨论的代码。
  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
    });