Показать QWidget с QSlider поверх иконки в трее

Я пытаюсь реализовать какой-то слайдер громкости в Qt. Я добавил QWidget с QSlider в теме. Это прекрасно работает для меня... Но! QWidget показывает в центре экрана. Но мне нужно это в верхней части иконки в трее.

Кто-нибудь знает, как это сделать?

Код:

VolumeSlider::VolumSlider(QWidget *parent) : QWidget(parent)
{
    setWindowFlags(Qt::Popup);
    resize(20, 150);

    slider = new QSlider(Qt::Vertical, this);
    slider->setRange(0, 100);
    slider->setSingleStep(5);
    slider->setPageStep(10);
    slider->setValue(currentVolume);
    slider->resize(20, 150);
}

Я показываю QWidget двухкомпонентной QSlider по среднему клику:

connect(trayIcon, SIGNAL(activated(QSystemTrayIcon::ActivationReason)),
  this, SLOT(trayIconClicked(QSystemTrayIcon::ActivationReason)));

И реализация слота:

void VolumeSlider::trayIconClicked(QSystemTrayIcon::ActivationReason reason)
{
    if (reason == QSystemTrayIcon::MiddleClick) {
        show();
    }
}

Спасибо за внимание!

С наилучшими пожеланиями!

1 ответ

Вы можете рассмотреть QSystemTrayIcon Учебный класс:

http://doc.qt.io/qt-5/qsystemtrayicon.html

И этот пример:

http://doc.qt.io/qt-4.8/qt-desktop-systray-example.html

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