Chinaunix首页 | 论坛 | 博客
  • 博客访问: 73347
  • 博文数量: 43
  • 博客积分: 605
  • 博客等级: 中士
  • 技术积分: 355
  • 用 户 组: 普通用户
  • 注册时间: 2012-07-26 18:11
文章分类

全部博文(43)

文章存档

2012年(43)

分类: C/C++

2012-08-08 14:19:42

弄了很久额。。。
一种简单的方法是:使用定时器定时,在使用信号与槽的方式监听BUTTON是否动作,信号与槽试了很久,不知道在groupbox和widget里怎么使用信号与槽监听
看了一下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();
}
阅读(4243) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~