`

QT事件处理

    博客分类:
  • Qt4
阅读更多
起先还担心QT从linux来,事件模型不一样,玩了以后发现完全多余, 熟悉swing或c#的事件处理就一点问题都没有。

和Swing的事件处理机制的一点点差别是,QT不使用对象注册那种方式,而是使用声明绑定的方式,更加灵活一些。
基本格式如下:

QObject::connect(sender, SIGNAL(signal), receiver, SLOT(slot));

SIGNAL表示对象的触发事件, SLOT表示相应的处理函数。 此处使用的是类似函数指针的做法,和c#很相似.相比java的inner class要简单干净一些。

这种做法还有个比较巧妙的地方,可以形成sender和receiver之间的自动关联,不用写多余代码。
比如下面的代码, 当spinbox的值发生变化时,自动把值设置给 slider。

QObject::connect(spinBox, SIGNAL(valueChanged(int)),
                     slider, SLOT(setValue(int)));

还有一种玩法, 把一个Signal绑定给另外一个signal,这样一个事件触发以后,另外一个对象的指定事件也会被触发

connect(lineEdit, SIGNAL(textChanged(const QString &)), this, SIGNAL(updateRecord(const QString &)));


也可以移除SIGNAL和SLOT之间的绑定关系

disconnect(lcd, SIGNAL(overflow()), this, SLOT(handleMathError()));


如果使用QT的designer,则还有一种玩法,使用名称约定的方式进行绑定。
比如
private slots:
     void on_addButton_clicked();

这就绑定了 addButton的clicked事件。
分享到:
评论

相关推荐

    Qt事件处理之鼠标处理事件

    这是一个Qt事件处理系统,目前只实现了鼠标事件的处理,后续将添加键盘事件,绘图事件,定时事件等等的处理过程。程序比较简单,适合初学者。程序开发环境:win7+qt5.7.0

    Qt事件处理,定时器

    关于Qt事件处理和定时器的详细内容,参考博客:http://blog.csdn.net/rl529014/article/details/53440211

    Qt事件处理及实例

    Qt最早是在1991年由奇趣科技开发的,1996年进入商业领域,成为全世界范围内数千种成功的应用程序的基础。它也是目前流行的Linux桌面环境KDE的基础,KDE是Linux发行版的主要一个标准组件。2008年,奇趣科技被诺基亚...

    QT的事件处理机制

    事件是窗口系统或者qt对不同情况的响应...QWidget::event()虚函数是各种事件的一个大管家,负责把大多数常用类型的事件传递给特定的事件处理器(事件处理函数,也都是虚拟函数,便于其继承子类对于该事件处理的编程),

    第11章 Qt 5事件处理.ppt

    qt事件处理qt事件处理qt事件处理

    Qt 事件处理机制 (上篇)

    1. #include 5. { 6. QApplication app(argc, argv)

    Qt 事件处理机制 (下篇) - 51CTO.COM1

    2. QApplication::exec() 3. QCoreApplication::exec() 4. QEventLoop::exec(ProcessE

    第9章 Qt事件机制与原理

    9.1.1 什么是Qt事件驱动?  我们在写Qt工程类项目的时候都会发现,主程序里面都有这么一段代码: int main(int argc, char *argv[]) { QApplication a(argc, argv); MainWindow w; w.show(); return a.exec...

    python3+PyQt5重新实现QT事件处理程序

    主要为大家详细介绍了python3+PyQt5重新实现QT事件处理程序,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

    QT Event 事件处理

    QT 中 QEvent 和 QKeyEvent事件的处理,其中QEvent包含QKeyEvent和QMouseEvent事件处理,在event中处理QKeyEvent事件将影响单独的QKeyEvent的事件处理函数

    课件与源码打包——qt5小白变大牛初级篇.rar

    3.本阶段主要完成Qt开发环境搭建、基于Widget的图形控件、布局管理、容器类、QT事件处理、QSS、QML等几个方面知识的学习 4.项目实战部分包括:计算器、CRM、视频播放器、视频加密器、等。 5.通过学习qt框架,...

    qt 事件源码

    Qt事件模型一个真正强大的特色是一个QObject 的实例能够管理另一个QObject 实例的事件。 让我们试着设想已经有了一个CustomerInfoDialog的小部件。CustomerInfoDialog 包含一系列QLineEdit. 现在,我们想用空格键...

    Qt/C++中使用OCX控件的调用方法及事件处理代码实例

    Qt/C++中使用OCX控件的调用方法及事件处理 代码实例简单的调用了OCX提供的函数,和OCX事件处理(采用了信号与槽的方式),调用qt的方法获取列出所有ocx控件的所有信号、函数、属性等。 谢谢大家的分享和分数,我很...

    Qt学习笔记之事件处理

    在Qt中处理事件有多种方法,不过最常用的是重写Qt事件处理函数。 2. Qt事件的来源 3. Qt事件机制 Qt中定义的事件是一个从QEvent类继承而来的对象,它表示应用程序内部或外部发生了某些应用程序自身必须知道的事情。...

    Qt事件过滤器Demo

    Qt事件过滤器(Event Filter)允许你在Qt应用程序中捕捉和处理事件,而无需修改原始的事件处理函数。使用事件过滤器,你可以在整个应用程序中截获和处理特定类型的事件,而不仅仅局限于单个控件。以下是Qt事件过滤器...

    Qt 之多线程处理多任务

    Qt线程池,实现多个任务抢占多线程调度功能,用Qt事件循环解决假死

    Qt事件系统相关练习代码

    1.1 事件的处理 1.2 事件的传递 1.2.1 程序练习 2. 鼠标和滚轮事件 2.1 程序练习代码 3. 键盘事件 3.1 程序练习代码 4. 定时器事件和随机数 4.1 程序练习代码 5. 事件过滤器与事件的发送 5.1 程序练习代码 6. 资源...

    利用Qt实现键盘事件的事件处理实例.zip

    利用Qt实现键盘事件的事件处理实例,详情可参考文章:https://blog.csdn.net/didi_ya/article/details/121944539

    qt图像处理,文字处理软件(菜单+工具栏+鼠标事件+定时器)

    qt图像处理,文字处理软件(菜单+工具栏+鼠标事件+定时器)

Global site tag (gtag.js) - Google Analytics