美文网首页
Qt中事件的理解(2)

Qt中事件的理解(2)

作者: xixiaxi | 来源:发表于2019-08-02 23:04 被阅读0次

    这一章我们继续讲Qt事件——事件的传递

    1、创建工程

    工程目录如下所示:

    创立工程testEvent,主窗口文件以mainwindow命名,子文件以lineedit命名。

    2、修改程序

    首先将lineedit.h文件内容修改如下:

    这里主要是添加了keyPressEvent()函数的声明。下面转到lineedit.cpp文件中。文件内容如下:

    lineedit.cpp主要就是对lineedit.h的具体实现。下面进入mainwindow.h,内容如下:

    红框是值得注意增加的内容,然后进入mainwindow.cpp文件中,添加内容如下:

    红框分别是添加的代码代码。当然要注意头文件。

    这里自定义了一个Lineedit类,它集成自QLineedit类,,然后再MainWindow中添加一个Lineedit部件。分别实现了Lineedit类和MainWindow类的键盘按下事件处理函数。

    3、执行程序

    下面运行程序,在窗口中按下任意按键,如回车,输出栏输出:

    说明此时只有LineEdit类的键盘按下事件处理函数运行了,在lineedit.cpp文件的keyPressEvent()函数最后一行添加代码:

    event->ignore();

    此时应用输出:

    要想输出栏能正常输出数字,在lineedit.cpp文件的keyPressEvent()前面添加默认事件处理函数即可。

    4、分析结论:

    这个例子中事件处理方式是采用重写部件的keyPressEvent()函数来实现。

    事件是先传递给指定窗口部件(Lineedit类焦点部件)。如果该部件忽略掉该事件,那么事件就会传递给这个部件的父部件(MainWindow类)。

    相关文章

      网友评论

          本文标题:Qt中事件的理解(2)

          本文链接:https://www.haomeiwen.com/subject/dmgirctx.html