Check if button was right clicked or left clicked?
-
When I try to add the QPushButton mouseEventPress() function into my code and redefine it it gives this error
member access into incomplete type 'QAbstractButtonPrivate'
-
You should not add the code from QAbstractButton::mousePressEvent() - you should override the function. This is basic c++ knowledge explained e.g. here: https://www.programiz.com/cpp-programming/function-overriding
-
All I get when I try to override the function is
non-friend class member 'mouseEventPress' cannot have a qualified name
-
@legitnameyo
show the code :) -
class Derived: public QPushButton { public: QPushButton A; QAbstractButton B(Derived); QAbstractButton::mouseMoveEvent(QMouseEvent *e); // Error void QAbstractButton::mousePressEvent(QMouseEvent *e) // Error { Q_D(QAbstractButton); if (e->button() != Qt::LeftButton) { e->ignore(); return; } if (hitButton(e->pos())) { setDown(true); d->pressed = true; repaint(); d->emitPressed(); e->accept(); } else { e->ignore(); } } };
-
@legitnameyo
You cannot define a qualifier in declaration of a member method.class Derived : public QPushButton{ public: //void QPushButton::mousePressEvent(QMouseEvent *e); // wrong void mousePressEvent(QMouseEvent *e); // right };
Further, you should to define the construtor method of your class.
Note: The construtor method is a function without return value and with same name of class.class Derived : public QPushButton{ public: Derived(); // construtor }
To accept signals and slot feature, you need to declare the
Q_OBJECT
inside your class.class Derived : QPushButton{ Q_OBJECT ... };
Below is an example code of how you should reimplement it using @mrjj idea.
class CustomPushButton : public QPushButton { Q_OBJECT public: CustomPushButton(QWidget *parent = nullptr); protected: void mousePressEvent(QMouseEvent *e) override; void mouseReleaseEvent(QMouseEvent *e) override; signals: void leftClicked(); void rightClicked(); };
Now, you need to reimplement the mousePressedEvent and mouseReleaseEvent(if necessary) logic on your .cpp file
-
all I get from that class is
:-1: error: symbol(s) not found for architecture x86_64 :-1: error: linker command failed with exit code 1 (use -v to see invocation)
-
@legitnameyo said in Check if button was right clicked or left clicked?:
all I get from that class is
This is no class, this is a class definition. You have to fill out the functions by yourself with the code you want to have - we won't write you your code...
-
I can't write out the functions since everything I want to override or change in QPushButton::mousePressEvent is private.
-
Solved it by creating a derivative of the CustomQPushButton class definition! Thanks!