Qt之添加QLabel的點擊事件


QLabel功能為顯示了一個字符串或者圖片等信息,它本身沒有click信號。也就不能夠響應click點擊事件,有什么辦法來實現來,我們可以子類化QLabel,實現MouseXXXEvent。
class MyLabel: public QLabel
{
  Q_OBJECT
  public:
  MyLabel(QWidget * parent = 0);
  private:
  protected:
  virtual void mouseReleaseEvent(QMouseEvent * ev);
  signals:
  void clicked(void);
};

MyLabel::MyLabel(QWidget * parent) : QLabel(parent)
{ }
void MyLabel::mouseReleaseEvent(QMouseEvent * ev)
{
  Q_UNUSED(ev)
  emit clicked();
}
就可以QObject::connect(m_MyLabel, SIGNAL(clicked()), this, SLOT(onClicked()))了。
實測OK。

上面只是簡單的一個實例,實際上一個完整的click點擊事件,要處理down,move,releae三個事件。

代碼需要加上以下內容:

...
public void MouseDownEvent(...)
public void MouseUpEvent(...)
public void MouseMoveEvent(...)
...
摘自:響應QLabel的點擊事件
http://blog.hehehehehe.cn/a/8334.htm
Qt 布局疊加


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM