我有自己的基于QWidget的课程。我把这个小部件放在QMainWindow中,我需要在这个小部件上点击鼠标。
我试过了:
connect(my_widget, SIGNAL(clicked()), this, SLOT(exit(0)));
但没有任何事情发生。我该怎么办?
答案 0 :(得分:29)
QWidget没有clicked()信号,QMainWindow没有exit()插槽。无法连接到未发送的信号和不存在的插槽。如果连接成功,则connect的返回值必须为true。在建立连接时检查此值以确保您的代码能够正常工作。
要退出申请,您必须致电qApp->quit()
另外,正如其他人所说,你必须安装eventFilter或重新实现
void QWidget::mousePressEvent ( QMouseEvent * event ) [virtual protected]
或
void QWidget::mouseReleaseEvent ( QMouseEvent * event ) [virtual protected]
方法
Qt的官方文档中有很多例子,this例如重新实现了mousePressEvent(QMouseEvent *event)
方法。
有关eventFilter选项,请参阅this小例子。
希望这有帮助。
答案 1 :(得分:6)
QWidget
没有clicked
信号。要使其工作,请使用事件。所有小部件都支持事件,所以有一些手动工作要做,但不多:
event
功能(源自QWidget
QEvent:: MouseButtonPress
或者,添加eventFilter
方法。
Google我提到的代码示例的类和方法,并根据您的具体需求获得完整的解决方案。