C++ QtQwidget单击
我在QWidget中有自己的类。我把这个小部件放在QMainWindow中,我需要用鼠标点击这个小部件 我试过: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
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]