Qt: Как отследить событие Release или Change для Phonon :: SeekSlider? - PullRequest
2 голосов
/ 27 мая 2011

Я использую Phonon :: SeekSlider, это круто, и мне не нужно беспокоиться о синхронизации между слайдером и MediaObject, но теперь мне нужно отслеживать момент, когда пользователь отпускает слайдер после его перемещения или когда его значениеизменяется или при изменении текущего времени MediaObject.Я не могу найти общедоступные сигналы, я вижу их в коде слайдера, но они являются частными.Как я мог унаследовать / внедрить / отследить что угодно, чтобы отслеживать это событие?

Спасибо

Ответы [ 3 ]

0 голосов
/ 27 мая 2011

Вы можете подключиться к частным сигналам так же, как и к любым другим. QStaticMetaObject игнорирует уровень видимости сигналов | слотов. Единственное отличие частных сигналов от обычных (которые имеют защищенный уровень видимости) - вы не можете излучать их при создании подкласса вашего Phonon :: SeekSlider.

0 голосов
/ 28 мая 2011

Полагаю, что нет другого способа сделать это, кроме как создать новый класс, унаследованный от QSlider, и добавить всю функциональность, касающуюся MediaObject, внутри.

0 голосов
/ 27 мая 2011

Вы можете создать класс, наследующий SeekSlider
в файле .h:

#include <Phonon/SeekSlider>

using namespace Phonon;

class MySeekSlider : public SeekSlider
{
    Q_OBJECT
public:
    MySeekSlider(QWidget *parent = 0);

signals:
    void release(qint64 pos);
protected:
    virtual void mouseReleaseEvent(QMouseEvent *);
};

и в .cpp

void MySeekSlider::mouseReleaseEvent(QMouseEvent *)
{
    emit release(this->pos());
}

или используйте тиковый сигнал вашего MediaObject

void    tick ( qint64 time )
...