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选项,请参阅此小示例.
希望这可以帮助.
A QWidget没有clicked信号.要使其工作,请使用事件.所有小部件都支持事件,所以有一些手动工作要做,但不多:
event窗口小部件的功能(您从中派生出来的功能)QWidgetQEvent:: MouseButtonPress或者,添加eventFilter方法.
谷歌我提到的代码示例的类和方法,并根据您的确切需求获得完整的解决方案.