2011-05-26 29 views
2

我使用Phonon :: SeekSlider,這是一件很酷的事情,我不需要打擾滑塊和MediaObject之間的同步,但現在我需要跟蹤用戶在移動滑塊之後釋放滑塊或者當它的值爲更改或當MediaObject的當前時間更改時。我找不到任何公共信號,我可以在滑塊的代碼中看到它們,但它們是私人的。我怎麼能繼承/實現/跟蹤任何跟蹤此事件?Qt:如何跟蹤Phonon :: SeekSlider的發佈或更改事件?

感謝

回答

0

您可以創建一個類繼承了.h文件中SeekSlider

#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 *); 
}; 

和the.cpp

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

,或者使用的滴答信號的MediaObject

void tick (qint64 time) 
+0

我也會嘗試這種方法。我今晚會這樣做,現在不行。謝謝 – mimic 2011-05-27 17:37:59

+0

此方法工作但不正確。我需要每次單擊,拖動然後移動滑塊時觸發此事件,但只有在滑塊中的某個位置單擊時纔會觸發該事件。 – mimic 2011-05-28 06:05:16

+0

我會嘗試在QSlider基礎上編寫我自己的查找滑塊,因爲這個小工具能正常工作,所以我只需要添加一些mediaObject功能。 – mimic 2011-05-28 06:06:17

0

您可以通過與其他人相同的方式連接到私人信號。QStaticMetaObject忽略信號槽的可見性級別。私人信號與正常信號的唯一區別(它具有受保護的可見性級別) - 子類化Phonon :: SeekSlider時不能發射它們。

+0

謝謝,我今晚會試試看,並告訴它是否有效。謝謝 – mimic 2011-05-27 17:37:10

+0

我在調查SeekSlider的代碼,看不到任何合適的私人信號。問題是SeekSlider不會繼承任何滑塊,它只是一個具有一些滑塊作爲其一部分的小部件,並且此滑塊本身是私有的,並且不能從外部訪問它。 – mimic 2011-05-28 03:57:27

0

我想沒有辦法做到,但要創建一個從QSlider繼承的新類,並添加關於MediaObject的全部功能。