本实例实现一个"Hello Kitty!"例子,简单介绍Qt编程的基本流程,以及Qt程序的编绎运行方式,实例效果图如图所示。

这是一个简单的例子,整个对话框只有一个按钮,单击该按钮,对话框关闭,退出程序。

实现代码如下:

fromPyQt4.QtGuiimport*

fromPyQt4.QtCoreimport*

importsys

app=QApplication(sys.argv)

b=QPushButton("Hello Kitty!")

b.show()

app.connect(b,SIGNAL("clicked()"),app,SLOT("quit()"))

app.exec_()

第1行导入PyQt4.QtGui的所有类及模块,包括QApplication,所有Qt图形化应用程序都必须包含此文件,它包含了Qt图形化应用程序的各种资源,基本设置,控制流以及事件处理等。

第5行新创建了一个QApplication对象,每个Qt应用程序都必须有且只有一个QApplication对象,采用sys.argv作为参数,便于程序处理命令行参数。

第6行创建了一个QPushButton对象,并设置它的显示文本为“Hello Kitty!”,由于此处并没有指定按钮的父窗体,因此以自己作为主窗口。

第7行调用show()方法,显示此按钮。控件被创建时,默认是不显示的,必须调用show()函数来显示它。

第8行的connect方法是Qt最重要的特征,即信号与槽的机制。当按钮被按下则触发clicked信号,与之相连的QApplication对象的槽quit()响应按钮单击信号,执行退出应用程序的操作。关于信号与槽机制在本实例最后将进行详细的分析。

最后调用QApplication的exec_()方法,程序进入消息循环,等待可能输入进行响应。Qt完成事件处理及显示的工作,并在应用程序退出时返回exec_()的值。

最后执行程序即可出现上图所示的对话框,一个简单的Hello Kitty!例子完成。

信号与槽机制作为Qt最重要的特性,提供了任意两个Qt对象之间的通信机制。其中,信号会在某个特定情况或动作下被触发,槽是用于接收并处理信号的函数。例如,要将一个窗口中的变化情况通知给另一个窗口,则一个窗口发送信号,另一个窗口的槽接收此信号并进行相应的操作,即可实现两个窗口之间的通信。这比传统的图形化程序采用回调函数的方式实现对象间通信要简单灵活得多。每个Qt对象都包含预定的信号和槽,当一某一特定事件发生时,一个信号被发射,与信号相关联的槽则会响应信号完成相应的处理。

信号与槽机制常用的连接方式为:

connect(Object1,SIGNAL(signal),Object2,SLOT(slot))

signal为对象Object1的信号,slot为对象Object2的槽,Qt的窗口部件都包含若干个预定义的信号和若干个预定义的槽。当一个类被继承时,该类的信号和槽也同时被继承。开始人员也可以根据需要定义自己的信号和槽。

信号与槽机制可以有多种连接方式,下图描述了信号与槽的多种可能连接方式。

1.一个信号可以与另一个信号相连

connect(Object1,SIGNAL(signal1),Object2,SIGNAL(signal1))

即表示Object1的信号1发射可以触发Object2的信号1发射。

2.表示一个信号可以与多个槽相连

connect(Object1,SIGNAL(signal2),Object2,SLOT(slot2))

connect(Object1,SIGNAL(signal2),Object3,SLOT(slot1))

3.表示同一个槽可以响应多个信号

connect(Object1,SIGNAL(signal2),Object2,SLOT(slot2))

connect(Object3,SIGNAL(signal2),Object2,SLOT(slot2))

Linux编程经典实例,PyQt4 精彩实例分析 - 实例1 Hello Kitty! _Linux编程_Linux公社-Linux系统门户网站...相关推荐

  1. 外网主机访问虚拟机下的Web服务器_服务器应用_Linux公社-Linux系统门户网站

    外网主机访问虚拟机下的Web服务器_服务器应用_Linux公社-Linux系统门户网站 之前在CentOS虚拟机上安装了LAMP,搭建起了自己的web服务器,具体流程见: http://www.lin ...

  2. linux车机系统怎么进工厂模式,工厂方法模式 - 跟JBPM学习设计模式_Linux编程_Linux公社-Linux系统门户网站...

    模式简介 工厂方法模式,定义一个用于创建对象的接口,让子类决定实例化那个类,其使一个类的实例化延迟到其子类中. 前边我们学习了简单工厂模式,简单工厂模式的最大优势在于工厂类中包含了必要逻辑判断,根据客 ...

  3. linux通过信号回调函数,信号机制的管理结构 - Linux内核中的信号机制_Linux编程_Linux公社-Linux系统门户网站...

    信号只是一个数字,数字为0-31表示不同的信号,如下表所示. 编号 信号名 默认动作 说明 1 SIGHUP 进程终止 终端断开连接 2 SIGINT 进程终止 用户在键盘上按下CTRL+C 3 SI ...

  4. linux在开发板LCD上显,W35型LCD驱动移植 - linux-2.6.32在mini2440开发板上移植_Linux编程_Linux公社-Linux系统门户网站...

    编者注:本移植主要步骤还是按照手册来,里面讲解了一些有用的基础知识.但书册上提供了集中屏幕的方案,我们这里主要就用一种,也就是开发板自带的W35型号.液晶驱动的源程序在src/drivers/vide ...

  5. linux判断网卡是否挂载,检查网卡是否加载 - Linux服务器网卡驱动安装及故障排除_服务器应用_Linux公社-Linux系统门户网站...

    2.检查网卡是否加载: 驱动硬件是操作系统最基本的功能,操作系统通过各种驱动程序来驾驭硬件设备,和Windows系统不同Linux内核目前采用可加载的模块化设计(LKMs Loadable Kerne ...

  6. linux普华认证,中标普华Linux - 盘点国内十大Linux版本[附图]_Linux教程_Linux公社-Linux系统门户网站...

    2.中标普华 中标普华Linux桌面操作系统是面向桌面办公领域的操作系统软件,该产品秉承人性化.实用化.效率化的设计理念,产品功能齐全,提供了用户所需的所有标准桌面应用软件 - 包括电子邮件与日历.W ...

  7. 显示驱动包含在Linux内核层,驱动程序层(上) - Linux内核--网络栈实现分析_Linux编程_Linux公社-Linux系统门户网站...

    经过前面两篇博文的分析,已经对Linux的内核网络栈的结构有了一个模糊的认识,这里我们开始从底层开始详细分析Linux内核网络栈的实现.由于这是早期版本,代码的层次隔离做的还不是很好,这里说是从底层分 ...

  8. 红旗linux mysql_恢复 - 红旗Linux案例精选:Amanda集中备份实例详细讲解_数据库技术_Linux公社-Linux系统门户网站...

    五.恢复 假定我们需要恢复cp3上一些丢失的数据,首先用amandabackup帐号登录cp2机器,创建/etc/amanda/amanda-client.conf文件,内容如下: # # amand ...

  9. 监听web服务器状态,处理监听fd的流程 - web服务器lighttpd1.4.18代码详细分析_Linux编程_Linux公社-Linux系统门户网站...

    //接收一个新的连接connection*connection_accept(server*srv, server_socket*srv_socket) {/*accept everything*// ...

  10. 给linux内核传递数组,数组与指针 - Linux C编程实战之路_Linux编程_Linux公社-Linux系统门户网站...

    谈到C语言编程,数组和指针是很多人的心头大石,总觉得它们是重点难点,重点是没错的,但绝不是什么难点,要说C语言的难点,客观地讲应该是带参宏,而数组和指针,概念浅显易懂,操作简洁方便,根本不是很多初学者 ...

最新文章

  1. 手机的秘密--按几个键就知道
  2. MacBook Air写代码真香!包邮送一台!
  3. Flash XSS 漏洞详解 根治的好办法
  4. Spring基于配置方式实现自定义条件装配
  5. Spring Boot 入门之缓存和 NoSQL 篇(四)
  6. Linux禁用user01账户,Linux 管理用户 useradd
  7. EevExpress中XtraGrid常用方法
  8. python-日志模块-logging
  9. 《编程之美》第2刷勘误
  10. Android底层到上层的开发流程
  11. BootStrap的基本使用
  12. Hadoop在master查看live nodes为0解决方案
  13. 亿佰特Wifi模块、蓝牙模块和Zigbee模块协议在物联网智能家居上的应用指南
  14. disallow .php,一次解决discuz只收录首页,不收录内页的问题,景安虚拟主机discuz帖子伪静态设置解决办法...
  15. 第3章 数据分析工具Pandas
  16. PS超简单的扣人像方法
  17. Debugging RJS
  18. 陈卫军著赚钱思维正式出版,又一次颠覆商业大脑传统思维!
  19. [人工智能学习日志]kaggle机器学习实战案例学习1
  20. 欧尼酱讲JVM(13)——本地方法栈

热门文章

  1. 基于 Verilog 的经典数字电路设计(10)三态门
  2. 蓝屏出现STOP:0X00000077是什么原因造成
  3. c语言大小写字母变换,C语言学习:任意大小写字母转换
  4. crypto405-grasshopper(网鼎杯2022)
  5. 图SLAM:Noob的同时本地化和映射指南
  6. vue设置浏览器顶部小图标
  7. 1个月到2岁半的育儿方案,有了它宝宝都不用去上早教啦
  8. rocketmq获取消息id_贞炸了!上线之后,消息收不到了
  9. 第1期——WLAN定义和基本架构
  10. draco压缩引擎学习笔记(二)