如何在鼠标移动时将工具提示添加到 QSlider [关闭]

Posted

技术标签:

【中文标题】如何在鼠标移动时将工具提示添加到 QSlider [关闭]【英文标题】:How to add ToolTip to QSlider on mouse move [closed] 【发布时间】:2020-09-11 06:03:57 【问题描述】:

我希望 QSlider 的工具提示在 QT C++ 中显示鼠标移动时滑块的当前值

【问题讨论】:

到目前为止你尝试过什么?请提供一些可以讨论的代码。 【参考方案1】:

忽略缺少 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 为真并且滑块移动时。这通常发生在用户拖动滑块时。


进一步阅读:

QSlider::sliderMoved() QSlider::setToolTip() QToolTip::showText()。

【讨论】:

以上是关于如何在鼠标移动时将工具提示添加到 QSlider [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

如何在python中使用pyqt5将QSlider添加到主窗口的工具栏

如何更改谷歌地图绘图管理器工具栏工具提示?

VB里怎样让鼠标指针移动到按钮上时弹出提示对话框

滑动条QSlider

如何将工具提示添加到 jtable 中的单元格?

GUI 编程 —— QT 的 QSlider 鼠标点击定位问题