Clickable QLabel: Difference between revisions

From Qt Wiki
Jump to navigation Jump to search
No edit summary
No edit summary
Line 1: Line 1:
h1. A 'Click'able QLabel
h1. A 'Click'able QLabel


A &quot;clicked&amp;quot; signal may sometimes be required from a label, but there is no &quot;clicked&amp;quot; signal emitted by QLabel.<br />You can work around this easily by making a QPushButton like a label by setting the 'flat' property.
A "clicked" signal may sometimes be required from a label, but there is no "clicked" signal emitted by QLabel.
You can work around this easily by making a QPushButton like a label by setting the 'flat' property.


However, if there are other properties of a QLabel object that you need, here is a code snippet for a custom QLabel which can emit a signal : 'clicked'.<br />In other words, a Clickable QLabel!
However, if there are other properties of a QLabel object that you need, here is a code snippet for a custom QLabel which can emit a signal : 'clicked'.
In other words, a Clickable QLabel!


== Header ==
== Header ==


<code>class ClickableLabel : public QLabel<br />{
<code>class ClickableLabel : public QLabel
{


Q_OBJECT
Q_OBJECT


public:<br /> explicit ClickableLabel( const QString&amp;amp; text =&quot;&quot;, QWidget * parent = 0 );<br /> ~ClickableLabel();
public:
explicit ClickableLabel( const QString&amp;amp; text ="", QWidget * parent = 0 );
~ClickableLabel();


signals:<br /> void clicked();
signals:
void clicked();


protected:<br /> void mousePressEvent ( QMouseEvent * event ) ;<br />};
protected:
void mousePressEvent ( QMouseEvent * event ) ;
};


</code>
</code>
Line 21: Line 29:
== Source ==
== Source ==


<code><br />ClickableLabel::ClickableLabel( const QString&amp;amp; text, QWidget * parent ) :<br /> QLabel(parent)
<code>
ClickableLabel::ClickableLabel( const QString&amp;amp; text, QWidget * parent ) :
QLabel(parent)


{<br /> this-&gt;setText(text);<br /> }
{
this->setText(text);
}


ClickableLabel::~ClickableLabel()<br /> {<br /> }
ClickableLabel::~ClickableLabel()
{
}


void ClickableLabel::mousePressEvent ( QMouseEvent * event )
void ClickableLabel::mousePressEvent ( QMouseEvent * event )


{<br /> emit clicked();<br /> }<br /></code>
{
emit clicked();
}
</code>


What we do here is simple : Catch the mouse press event on the label. Then emit 'clicked' signal. We could as well make the signal be emitted when mouse gets released. This is let to be a decision of the developer.
What we do here is simple : Catch the mouse press event on the label. Then emit 'clicked' signal. We could as well make the signal be emitted when mouse gets released. This is let to be a decision of the developer.


[[Category:Developing_with_Qt]]
[[Category:Developing_with_Qt]]

Revision as of 08:55, 25 February 2015

h1. A 'Click'able QLabel

A "clicked" signal may sometimes be required from a label, but there is no "clicked" signal emitted by QLabel. You can work around this easily by making a QPushButton like a label by setting the 'flat' property.

However, if there are other properties of a QLabel object that you need, here is a code snippet for a custom QLabel which can emit a signal : 'clicked'. In other words, a Clickable QLabel!

Header

class ClickableLabel : public QLabel
{

Q_OBJECT

public:
 explicit ClickableLabel( const QString&amp;amp; text ="", QWidget * parent = 0 );
 ~ClickableLabel();

signals:
 void clicked();

protected:
 void mousePressEvent ( QMouseEvent * event ) ;
};

Source

ClickableLabel::ClickableLabel( const QString&amp;amp; text, QWidget * parent ) :
 QLabel(parent)

{
 this->setText(text);
 }

ClickableLabel::~ClickableLabel()
 {
 }

void ClickableLabel::mousePressEvent ( QMouseEvent * event )

{
 emit clicked();
 }

What we do here is simple : Catch the mouse press event on the label. Then emit 'clicked' signal. We could as well make the signal be emitted when mouse gets released. This is let to be a decision of the developer.