qt QWidget点击

0xA*_*xAX 23 c++ qt signals-slots

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

我试过了:

connect(my_widget, SIGNAL(clicked()), this, SLOT(exit(0)));
Run Code Online (Sandbox Code Playgroud)

但什么都没发生.我该怎么做?

Liv*_*ive 34

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

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

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

void QWidget::mousePressEvent ( QMouseEvent * event )   [virtual protected]
Run Code Online (Sandbox Code Playgroud)

要么

void QWidget::mouseReleaseEvent ( QMouseEvent * event )   [virtual protected]
Run Code Online (Sandbox Code Playgroud)

方法.

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

有关eventFilter选项,请参阅小示例.

希望这可以帮助.


Eli*_*sky 9

A QWidget没有clicked信号.要使其工作,请使用事件.所有小部件都支持事件,所以有一些手动工作要做,但不多:

  1. 覆盖event窗口小部件的功能(您从中派生出来的功能)QWidget
  2. 回应类型的事件 QEvent:: MouseButtonPress

或者,添加eventFilter方法.

谷歌我提到的代码示例的类和方法,并根据您的确切需求获得完整的解决方案.