C++ QtQwidget单击

C++ QtQwidget单击,c++,qt,signals-slots,C++,Qt,Signals Slots,我在QWidget中有自己的类。我把这个小部件放在QMainWindow中,我需要用鼠标点击这个小部件 我试过: connect(my_widget, SIGNAL(clicked()), this, SLOT(exit(0))); 但什么都没有发生。如何操作?QWidget没有clicked()信号,QMainWindow没有exit()插槽。无法连接到不存在的信号和不存在的插槽。如果连接成功,则连接的返回值必须为true。建立连接时请检查此值,以确保代码正常工作 要退出应用程序,必须调用q

我在QWidget中有自己的类。我把这个小部件放在QMainWindow中,我需要用鼠标点击这个小部件

我试过:

connect(my_widget, SIGNAL(clicked()), this, SLOT(exit(0)));

但什么都没有发生。如何操作?

QWidget没有clicked()信号,QMainWindow没有exit()插槽。无法连接到不存在的信号和不存在的插槽。如果连接成功,则连接的返回值必须为true。建立连接时请检查此值,以确保代码正常工作

要退出应用程序,必须调用
qApp->quit()

另外,正如其他人所提到的,您必须安装eventFilter或重新实现

void QWidget::mousePressEvent ( QMouseEvent * event )   [virtual protected]

方法

Qt的官方文档中有很多例子,例如重新实现
mousePressEvent(QMouseEvent*event)
方法

有关eventFilter选项,请参见小示例


希望这有帮助。

一个
QWidget
没有
点击的信号。要使其工作,请使用事件。所有小部件都支持事件,因此需要进行一些手动操作,但不是很多:

  • 覆盖小部件的
    事件
    函数(您从
    QWidget
  • 响应类型为
    QEvent::MouseButtonPress
  • 或者,添加
    eventFilter
    方法

    用谷歌搜索我提到的代码示例类和方法,并根据您的具体需求获得完整的解决方案

    void QWidget::mouseReleaseEvent ( QMouseEvent * event )   [virtual protected]