Как добавить всплывающую подсказку в QSlider при движении мыши

Я хочу, чтобы всплывающая подсказка для QSlider показывала текущее значение ползунка при перемещении мыши в QT C++

1 ответ

Игнорирование отсутствия MCVE OP…

…вот так:

       // 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() signal подключается к слоту (представленному как лямбда), который устанавливает текущее значение как всплывающую подсказку.

Для этого QSlider::setToolTip() функция (унаследованная от QWidget) может быть использован. При использовании я обнаружил досадную задержку (которую я помню из своих собственных проектов, как ее можно исправить).

С помощью QToolTip::showText() вместо этого обеспечивает лучший внешний вид.

Обратите внимание, что я предпочел QSlider::sliderMoved() над QSlider::valueChanged(). Последний вызывается для любого изменения ползунка (даже если он не является результатом взаимодействия с пользователем), в то время как первый специально вызывается

когда sliderDown имеет значение true и ползунок перемещается. Обычно это происходит, когда пользователь перетаскивает ползунок.


Дальнейшее чтение:

Другие вопросы по тегам