クリック可能なQLabelの作り方

QLabelにはリンクがクリックされたり、ホバーしたときに送信されるシグナル関数はありますが、クリックされたときにはシグナルが送信されません。

それでは不便な場合もあるので次のようにQLabelを拡張してクリックを受け取れるラベルクラスを作ります。

ClickableLabel
class ClickableLabel : public QLabel
{
Q_OBJECT
public:
    explicit ClickableLabel(const QString& text="", QWidget* parent=0);
    ~ClickableLabel();
    
signals:
    void clicked();
protected:
    void mousePressEvent(QMouseEvent* event);
};
ClickableLabel.cpp
ClickableLabel::ClickableLabel(const QString& text, QWidget* parent)
    : QLabel(text, parent)
{}
 
void ClickableLabel::mousePressEvent(QMouseEvent* event)
{
    emit clicked();
}
 
ClickableLabel::~ClickableLabel()
{}

これでボタンなどと同じようにクリックされたときにシグナルを受け取ることが可能になります。

プライバシーポリシー