看了一下groupbox的click()功能,试了一下才知道groupbox的click()监听事件是监听groupBox的选择(checked)的,汗了。。。。英语理解能力太差。。
另一种方式是重写QAPPLICATION的 函数,实现对整个程序的监听。
头文件:
class Application : public QApplication
{
public:
Application(int & argc, char ** argv);
bool notify(QObject *, QEvent *);
void setWindowInstance(MainWindow* wnd);
private:
MainWindow* window; //保存一个你窗体的指针
};
CPP:
Application::Application(int &argc, char **argv)
: QApplication(argc,argv)
, window(0)
{
}
void Application::setWindowInstance(MainWindow *wnd)
{
window = wnd;
}
bool Application::notify(QObject *obj, QEvent *e)
{
if(e->type() == QEvent::MouseMove)
{
if(window)
{
window->doSomething(); //调用你窗体相应的函数
}
}
return QApplication::notify(obj,e);
}
main.cpp
int main(int argc, char *argv[])
{
Application app(argc, argv);
MainWindow w;
w.show();
app.setWindowInstance(&w);
return app.exec();
}
还有一种就是EventFilter方式:没去试
重载 bool QApplication::qwsEventFilter ( QWSEvent * event ) 这个函数
#ifndef APPLICATION_H
#define APPLICATION_H
#include
#include
class Application : public QApplication
{
public:
Application(int & argc, char ** argv);
bool notify(QObject *, QEvent *);
bool qwsEventFilter(QWSEvent * event);
};
#endif // APPLICATION_H
#include "application.h"
Application::Application(int &argc, char **argv):
QApplication(argc,argv)
{
}
bool Application::notify(QObject *obj, QEvent *e)
{
//do something
return QApplication::notify(obj,e);
}
bool Application::qwsEventFilter(QWSEvent *event)
{
//do something
return QApplication::qwsEventFilter(event);
}
main.pp:
#include "application.h"
#include "mainwindow.h"
int main(int argc, char *argv[])
{
Application a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}