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 布局疊加