Tianchi  v0.0.2 build 20130701
C++ library for Qt with VC & mingW
tcmarqueelabel.h
1 // **************************************************************************
2 // Tianchi C++ library for Qt (open source)
3 // 天池共享源码库
4 // 版权所有 (C) 天池共享源码库开发组
5 // 授权协议:请阅读天池共享源码库附带的授权协议
6 // **************************************************************************
7 // 文档说明:跑马灯Label,点击时自动打开网址
8 // ==========================================================================
9 // 开发日志:
10 // 日期 人员 说明
11 // --------------------------------------------------------------------------
12 // 2013.04.18 XChinux 建立
13 // 2013.05.19 XChinux 修改原移动Label位置的实现为使用contentsMargin来实现
14 // 2013.05.22 XChinux 增加interval active属性及相关信号和槽函数
15 // ==========================================================================
17 // ==========================================================================
18 #ifndef TIANCHI_TCMARQUEELABEL_H
19 #define TIANCHI_TCMARQUEELABEL_H
20 
21 #include <tianchi/tcglobal.h>
22 
23 #include <QLabel>
24 
25 QT_BEGIN_NAMESPACE
26 QT_END_NAMESPACE
27 
28 class TcMarqueeLabelPrivate;
32 class TIANCHI_API TcMarqueeLabel : public QLabel
33 {
34  Q_OBJECT
35 
36  Q_ENUMS(Direction)
37 
38  // @brief 设置文字滚动方向
39  Q_PROPERTY(Direction direction
40  READ direction
41  WRITE setDirection
42  NOTIFY directionChanged
43  DESIGNABLE true)
44 
45 
46  Q_PROPERTY(int interval
47  READ interval
48  WRITE setInterval
49  NOTIFY intervalChanged
50  DESIGNABLE true)
51 
52 
53  Q_PROPERTY(bool active
54  READ isActive
55  WRITE setActive
56  NOTIFY activeChanged
57  DESIGNABLE true)
58 
59  Q_PROPERTY(Qt::Alignment alignment
60  READ alignment
61  WRITE setAlignment
62  DESIGNABLE true)
63 public:
64  TcMarqueeLabel(QWidget * parent = 0, Qt::WindowFlags f = 0);
65  TcMarqueeLabel(const QString &text, QWidget *parent = 0,
66  Qt::WindowFlags f = 0);
67  virtual ~TcMarqueeLabel();
69  int interval() const;
71  bool isActive() const;
72 
73  enum Direction
74  {
75  RightToLeft = 0,
76  BottomToTop = 1
77  };
78 
79  Direction direction() const;
80  void setAlignment(Qt::Alignment align);
81 Q_SIGNALS:
83  void intervalChanged(int interval);
85  void activeChanged(bool active);
87  void directionChanged(Direction direction);
88 public Q_SLOTS:
91  void reset();
94  void setActive(bool active);
97  void setInterval(int msec);
100  void start();
103  void stop();
106  void setDirection(Direction direciton);
107 protected:
108  virtual void enterEvent(QEvent *event);
109  virtual void leaveEvent(QEvent *event);
110  virtual void resizeEvent(QResizeEvent *event);
111  virtual void timerEvent(QTimerEvent *event);
112  virtual void paintEvent(QPaintEvent *event);
113 private:
114  Q_DISABLE_COPY(TcMarqueeLabel)
115  Q_DECLARE_PRIVATE(TcMarqueeLabel)
116  Q_PRIVATE_SLOT(d_func(), void _q_openLink(const QString &))
117  TcMarqueeLabelPrivate* const d_ptr;
118 };
119 
120 #endif