Ⅰ.2.5 如何使用Qt Signal Handles
来源:互联网 发布:木工柜门半盖怎么算法 编辑:程序博客网 时间:2024/05/22 03:32
注意:Qt-specific Squish
这个部分只应用于Qt版的Squish,因为它关系到Qt的特定功能。
使用installSignalHandler函数可以跟踪UI界面(或任何AUT QObject)widgets发出的Qt signals。
应该在AUT启动之后调用installSignalHandler函数,传递参数:一个已经存在的AUT对象的名字、一个信号签名和一个handler函数的名字。如果需要注册多个object/signal/handler组合体,可以多次调用这个函数。下面是一个非常简单的展示例子:
def tableItemChangedHandler(obj, item): test.log('itemChanged emitted by object "%s" on item "%s"' %(objectMap.symbolicName(obj), item.text()))def main(): startApplication("addressbook") # ... various actions ... now the table widgetexists installSignalHandler( ":Address Book - MyAddresses.adr.File_QTableWidget", "itemChanged(QTableWidgetItem*)","tableItemChangedHandler") #... the rest if the test
无论何时QTableWidget中的任何项发生了改变,将会调用tableItemChangedHandler函数,该函数携带一个发送了信号的table widget的引用。下面例子中,我们使用objectMap.symbolicName函数记录发送了信号的对象的symbolic name,以及改变了的QTableWidgetItem的text。因此每次发送信号(即,无论何时改变了一个table item),我们将会获取一条类似下面的log输出:
itemChanged emitted by object":Address Book - MyAddresses.adr.File_QTableWidget" on item "Done"第一个被传给handler的参数始终是一个发送信号的对象的引用。如果该信号有任何参数,跟随着第一个参数,这些参数同样也被传给这个handler。所以在上面的例子中 itemChanged(QTableWidgetItem*) 信号有一个参数,因此该handler获取两份参数——发送信号的object和信号的table item。
当然,如果喜欢,我们可以注册许多handlers。下面是一些附加handler的例子:
def fileMenuHandler(obj, action): test.log('triggered emitted by object "%s" for action "%s"' %( objectMap.symbolicName(obj),action.text))def modelIndexClickedHandler(obj, index): test.log(‘clicked emitted by object "%s" on index "%s"’ %s( objectMap.symbolicName(obj), index.text))def cellClickedHandler(obj, row, column): test.log('clicked emitted by object "%s" on cell (%d, %d)' %( objectMap.symbolicName(obj), row, column))记住,只可以为已经存在的对象安装handlers。所有的例子代码取自于Squish中examples/qt/addressbook/suite_*/tst_signal_handler,可以去该目录下查看全部代码。
0 0
- Ⅰ.2.5 如何使用Qt Signal Handles
- 深入理解QT的SIGNAL\SLOT机制(一):SIGNAL\SLOT如何使用
- Qt的signal和slot使用心得
- Qt signal
- Qt的signal/slot机制的原理和使用
- 使用QT中的Signal&Slot机制进行传值
- 使用SLOT/SIGNAL函数传递变量进Dialog #Qt
- QT signal / slots 注意事项
- qt signal and slot
- QT signal / slot mechanism
- Qt signal 机制
- qt slot & signal
- Ⅰ.2. 如何使用Qt API
- Ⅰ.2.4 如何使用Qt Convenience API
- 如何使用 Qt Phonon
- 如何使用 Qt Phonon
- 如何使用好pyqt的signal和slot
- 如何在qt designer中自定义信号/槽(Signal/Slot)
- swift之函数(functions)
- POJ1251 Jungle Roads(kru)
- Ⅰ.2.4 如何使用Qt Convenience API
- IOS开发之TabBarItem&NavigationBarItem
- LeetCode OJ 系列之283 Move Zeroes --Python
- Ⅰ.2.5 如何使用Qt Signal Handles
- Android 多线程处理之多线程用法大集合
- C# Eval
- Cocos2D:塔防游戏制作之旅(十一)
- Google Java编程风格指南
- 黑马程序员——网络编程(二)
- 实例讲解如何利用jQuery设置图片居中放大或者缩小
- 凸优化--强弱对偶性的几何解释
- [leetcode 249] Group Shifted Strings