qt QWidget点击

时间:2010-10-26 14:52:33

标签: c++ qt signals-slots

我有自己的基于QWidget的课程。我把这个小部件放在QMainWindow中,我需要在这个小部件上点击鼠标。

我试过了:

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

但没有任何事情发生。我该怎么办?

2 个答案:

答案 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信号。要使其工作,请使用事件。所有小部件都支持事件,所以有一些手动工作要做,但不多:

  1. 覆盖您的小部件的event功能(源自QWidget
  2. 回复QEvent:: MouseButtonPress
  3. 类型的事件

    或者,添加eventFilter方法。

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