微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在鼠标移动时将ToolTip添加到QSlider

如何解决如何在鼠标移动时将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();
}

输出:

snapshot of testQSliderToolTip (animated)

此MCVE的基本部分是:

  QObject::connect(&qSlider,nullptr);
#endif // 0
    });

QSlider::sliderMoved()信号连接到一个插槽(提供为lambda),该插槽将当前值设置为工具提示。

为此,可以使用QSlider::setToolTip()函数(从QWidget继承)。使用此功能时,我发现了一个令人讨厌的延迟(我从我自己的项目中记得如何解决该问题)。

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

请注意,相对于QSlider::sliderMoved(),我更喜欢QSlider::valueChanged()。后者被要求对滑块进行任何更改(即使不是由用户交互导致的更改),而前者被专门称为

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


进一步阅读:

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。