sliderwidget.h
来自「Amarok是一款在LINUX或其他类UNIX操作系统中运行的音频播放器软件。 」· C头文件 代码 · 共 162 行
H
162 行
/*************************************************************************** amarokslider.h - description ------------------- begin : Dec 15 2003 copyright : (C) 2003 by Mark Kretschmann email : markey@web.de copyright : (C) 2005 by Gábor Lehel email : illissius@gmail.com***************************************************************************//*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/#ifndef AMAROKSLIDER_H#define AMAROKSLIDER_H#include <config.h>#include "metabundle.h"#include <kpixmap.h>#include <kurl.h>#include <qpixmap.h>#include <qslider.h>#include <qvaluevector.h>class QPalette;class QTimer;namespace Amarok{ class Slider : public QSlider { Q_OBJECT public: Slider( Qt::Orientation, QWidget*, uint max = 0 ); virtual void setValue( int ); //WARNING non-virtual - and thus only really intended for internal use //this is a major flaw in the class presently, however it suits our //current needs fine int value() const { return adjustValue( QSlider::value() ); } signals: //we emit this when the user has specifically changed the slider //so connect to it if valueChanged() is too generic //Qt also emits valueChanged( int ) void sliderReleased( int ); protected: virtual void wheelEvent( QWheelEvent* ); virtual void mouseMoveEvent( QMouseEvent* ); virtual void mouseReleaseEvent( QMouseEvent* ); virtual void mousePressEvent( QMouseEvent* ); virtual void slideEvent( QMouseEvent* ); bool m_sliding; /// we flip the value for vertical sliders int adjustValue( int v ) const { int mp = (minValue() + maxValue()) / 2; return orientation() == Vertical ? mp - (v - mp) : v; } private: bool m_outside; int m_prevValue; Slider( const Slider& ); //undefined Slider &operator=( const Slider& ); //undefined }; class PrettySlider : public Slider { Q_OBJECT public: typedef enum { Normal, // Same behavior as Slider *unless* there's a moodbar Pretty } SliderMode; PrettySlider( Qt::Orientation orientation, SliderMode mode, QWidget *parent, uint max = 0 ); virtual void newBundle( const MetaBundle &bundle ); protected: virtual void paintEvent( QPaintEvent *e ); virtual void slideEvent( QMouseEvent* ); virtual void mousePressEvent( QMouseEvent* ); protected slots: void moodbarJobEvent( int newState ); void slotMoodbarPrefs( bool show, bool moodier, int alter, bool withMusic ); private: PrettySlider( const PrettySlider& ); //undefined PrettySlider &operator=( const PrettySlider& ); //undefined SliderMode m_mode; MetaBundle m_bundle; // Has our moodbar data! bool m_showingMoodbar; }; class VolumeSlider: public Slider { Q_OBJECT public: VolumeSlider( QWidget *parent, uint max = 0 ); protected: virtual void paintEvent( QPaintEvent* ); virtual void hideEvent( QHideEvent* ); virtual void showEvent( QShowEvent* ); virtual void enterEvent( QEvent* ); virtual void leaveEvent( QEvent* ); virtual void paletteChange( const QPalette& ); virtual void slideEvent( QMouseEvent* ); virtual void mousePressEvent( QMouseEvent* ); virtual void contextMenuEvent( QContextMenuEvent* ); virtual void wheelEvent( QWheelEvent *e ); private slots: virtual void slotAnimTimer(); private: void generateGradient(); VolumeSlider( const VolumeSlider& ); //undefined VolumeSlider &operator=( const VolumeSlider& ); //undefined //////////////////////////////////////////////////////////////// static const int ANIM_INTERVAL = 18; static const int ANIM_MAX = 18; bool m_animEnter; int m_animCount; QTimer* m_animTimer; QPixmap m_pixmapInset; KPixmap m_pixmapGradient; QValueVector<QPixmap> m_handlePixmaps; };}#endif
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?