Hello,
I have my own class based in QWidget. I put this widget in QMainWindow and i need catch mouse click on this widget.
I try:
connect(my_widget,SIGNAL(clicked()),this,SLOT(exit(0)));
But nothing happening. How can i do it?
Thank you
Hello,
I have my own class based in QWidget. I put this widget in QMainWindow and i need catch mouse click on this widget.
I try:
connect(my_widget,SIGNAL(clicked()),this,SLOT(exit(0)));
But nothing happening. How can i do it?
Thank you
QWidget does not have a clicked() signal, and QMainWindow does not have an exit() slot. It is impossible to connect to an unexisting signal and unexisting slot. The return value of the connect must be true if the connect is successful. Check this value when you make connections to be sure that your code will work correctly.
To exit your application, you must call qApp->quit()
Also, as it has been mentioned by others, you will have to install an eventFilter or reimplement the
void QWidget::mousePressEvent ( QMouseEvent * event ) [virtual protected]
or
void QWidget::mouseReleaseEvent ( QMouseEvent * event ) [virtual protected]
methods.
There are plenty of examples in the official doc of Qt, this for example reimplements the mousePressEvent(QMouseEvent *event)
method.
For the eventFilter option, see this small example.
Hope this helps.
A QWidget
has no clicked
signal. To make this work, use events. All widgets support events, so there's some manual work to do, but not much:
event
function for your widget (which you derive from QWidget
QEvent:: MouseButtonPress
Alternatively, add a eventFilter
method.
Google the classes and methods I mentioned for code samples and to get to a complete solution depending on your exact needs.