I googled around and found this forum thread in which the OP seems to have had the exact problem I am having. The question is, how would I inherit from QLabel
and reimplement the mousepressed event? I'm guessing it would be something like this:
class CustomLabel : public QLabel
{
public:
//what about the constructors?
void mousePressEvent ( QMouseEvent * ev );
}
void CustomLabel::mousePressEvent ( QMouseEvent * ev )
{
QPoint = ev->pos();
//I want to have another function get the event position.
//How would I achieve this? It's void!
//Is there perhaps some way to set up a signal and slot with the position?
}
And after I have successfully created a CustomLabel
class, how would I be able to put it in design view?
just like this :D
void CustomLabel::mousePressEvent(QMouseEvent *ev)
{
QString x = QString::number(ev->x());
QString y = QString::number(ev->y());
qDebug() << x << "," << y;
}
Yes, you can set up a signal on your CustomLabel
class and have your overridden version of mousePressEvent
emit it. i.e.
class CustomLabel : public QLabel
{
Q_OBJECT
signals:
void mousePressed( const QPoint& );
public:
CustomLabel( QWidget* parent = 0, Qt::WindowFlags f = 0 );
CustomLabel( const QString& text, QWidget* parent = 0, Qt::WindowFlags f = 0 );
void mousePressEvent( QMouseEvent* ev );
};
void CustomLabel::mousePressEvent( QMouseEvent* ev )
{
const QPoint p = ev->pos();
emit mousePressed( p );
}
CustomLabel::CustomLabel( QWidget * parent, Qt::WindowFlags f )
: QLabel( parent, f ) {}
CustomLabel::CustomLabel( const QString& text, QWidget* parent, Qt::WindowFlags f )
: QLabel( text, parent, f ) {}
The constructors just mimic those of the base QLabel
and therefore simply pass their arguments straight on to the corresponding base constructors.
Is it just me, or doesn't QMouseEvent
already give the information you need?
int QMouseEvent::x () const
Returns the x position of the mouse cursor, relative to the widget that received the event.
See also y() and pos().
int QMouseEvent::y () const
Returns the y position of the mouse cursor, relative to the widget that received the event.
See also x() and pos().
Ref: http://doc.qt.nokia.com/4.7.old/qmouseevent.html#x
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With