首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >QTest不能将事件传递给子部件

QTest不能将事件传递给子部件
EN

Stack Overflow用户
提问于 2013-11-14 04:15:25
回答 2查看 1K关注 0票数 2

我正在用qtestlib编写一些自动测试代码.在下面的示例代码中:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#include <QtTest/QtTest>

QWidget *win = new QWidget;
QLabel *label = new QLabel("&what");
QLineEdit *le = new QLineEdit;
label->setBuddy(le);

QHBoxLayout *layout = new QHBoxLayout;
layout->addWidget(label);
layout->addWidget(le);
win->setLayout(layout);
win->show();

QTestEventList events1, events2;
events1.addKeyClick(Qt::Key_W, Qt::AltModifier);
events1.addKeyClicks("hello");
events1.addDelay(1000);
events1.simulate(win); // didn't type 'hello'

events2.addKeyClicks("world");
events2.addDelay(1000);
events2.simulate(le); // did type 'world'

我不能让le通过向其父部件win发送事件来获得焦点并键入'hello‘。但我可以通过直接向le发送事件来做到这一点。

通常情况是,自定义QWidget类中有许多私有小部件成员。我无法通过将事件发送到实例来模拟键/鼠标事件。当然,我不能将事件发送到它的私有部件。那么,我能做什么来对这样的类执行一个自动测试呢?

环境: Gentoo Linux KDE Qt-4.8

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-11-14 04:42:39

现在肯定找到了解决办法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  QTest::keyClick(win, Qt::Key_F, Qt::AltModifier,500);
  QTest::keyClicks(win->focusWidget(),"blah");
  QTest::keyClick(win, Qt::Key_W, Qt::AltModifier,500);
  QTest::keyClicks(win->focusWidget(),"blah2");

最后一个参数是延迟,这是必要的(您应该测试它)。

票数 1
EN

Stack Overflow用户

发布于 2013-11-14 06:37:08

最好的方法是为测试小部件的子对象设置名称,然后用这个名称获取它们。

你也应该把注意力集中在这个编辑器上。有很多方法可以做到这一点。例如,通过调用nextInFocusChain,直到达到所需的编辑器和调用的setFocus(Qt::MouseFocusReason);

获取私有部件的其他方法是对子类和/或分叉构建进行测试,在那里您可以自由地访问私有部件(可以为此准备一些宏)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19977383

复制
相关文章
关于超过255台电脑的内网IP规划问题
网络IP地址“主要”分为ABC三类,以下是覆盖范围: A类:0.0.0.0 - 127.255.255.255,标谁的子网掩码是255.0.0.0(按子网掩码的另一种标注方法是/8,就是将子网掩码换算成二进制后,从左数起8个1) B类:128.0.0.0 - 191.255.255.255,标谁的子网掩码是255.255.0.0(按子网掩码的另一种标注方法是/16,就是将子网掩码换算成二进制后,从左数起16个1) C类:192.0.0.0 - 223.255.255.255,标谁的子网掩码是255.
网络工程师笔记
2021/05/17
1.4K0
关于超过255台电脑的内网IP规划问题
动态执行超过4000个字符的SQL
sp_executesql 可能用 exec sp_executesql @sqltext,@paramstring,@urlM_ID output 来得到动态执行中返回值,@sqltext的长度可能超过了4000字符,可以使用nvarchar(max)解决,类似于: declare @request1 nvarchar(4000) declare @request2 nvarchar(4000) declare @request3 nvarchar(max) – Fill @request1
张善友
2018/01/22
7260
对255取余数
核心思想是LFSR `timescale 1ns / 1ps //对255取余数 //网上的那个用LUT //至于说逼近法,我就不考虑了 module div_255( input dividend, input clk, input rst_n, output [7:0] remainder ); parameter di
瓜大三哥
2018/02/26
1.4K0
对255取余数
DataGridView输出或保存为Excel文件(支持超过65536行多Sheet输出)
/// <summary>         /// DataGridView控件数据导出到Excel,可设定每一个Sheet的行数         /// 建立多个工作表来装载更多的数据         /// </summary>         /// <param name="ExportGrid">DataGridView控件</param>         /// <param name="fullFileName">保存的文件路径</param>         /// <param name=
跟着阿笨一起玩NET
2018/09/18
1.5K0
Linux 命令(255)—— sleep 命令
有时在写一些以循环方式运行的监控脚本,设置时间间隔是必不可少的,下面是一个Shell进度条的脚本演示在脚本中生成延时。
恋喵大鲤鱼
2023/02/23
2.7K0
一条这样的SQL语句最多能查询出来多少条记录?
  这三个东东具体都是什么呢? packet 到底是结果集大小,还是网络包大小还是什么? 于是 google 了一下,搜索排名第一的是这个:
THUNDER王
2023/10/13
3710
一条这样的SQL语句最多能查询出来多少条记录?
LeetCode笔记:Weekly Contest 255(补发)
这一题我的思路是通过trie树进行的代码实现,倒是也没啥,然后看了一下别人的解法,感觉有点做烦了,因为要求数组中的数据总数和总的数据的位数是相同的,因此事实上大部分的数字事实上不会出现在给出的数组当中的。
codename_cys
2021/09/09
2080
js输出一个字符串全队列
剁椒鱼鳞
2023/06/26
1980
js输出一个字符串全队列
[译] PEP 255--简单的生成器
我正打算写写 Python 的生成器,然而查资料时发现,引入生成器的 PEP 没人翻译过,因此就花了点时间翻译出来。如果在阅读时,你有读不懂的地方,不用怀疑,极有可能是我译得不到位。若出现这种情况,我建议你直接阅读原文,最好也能将错误处告知于我,以便做出修改。
Python猫
2019/04/09
5890
docker exit status 255解决
windows开发整docker就是痛苦,在公司win7电脑想拿起几年没再用的docker
ydymz
2018/12/06
4.4K0
pymysql return self._by_id[id] KeyError: 255
错误日志 (joyo) E:\git_stores\blog>python manage.py migrate E:\py_envs\joyo\lib\site-packages\daphne\server.py:15: UserWarning: Something has already installed a non-asyncio Twisted reactor. Attempting to uninstall it; you can fix this warning by importing dap
卓越笔记
2023/03/01
4350
pymysql  return self._by_id[id]  KeyError: 255
java将字符串分段输出_java输入字符串并将每个字符输出的方法[通俗易懂]
public static void main(String[] args){
全栈程序员站长
2022/11/02
3.9K0
核聚变重大突破!人类首次实现输出能量超过输入
Alex 发自 凹非寺 量子位 | 公众号 QbitAI 物理界的Breaking News来了! 科学家首次在聚变反应中,实现了净能量增益——也就是说,聚变反应产生的能量,比注入的能量还多。 当地时间周二上午7点,美国能源部和劳伦斯利弗莫尔国家实验室(LLNL),共同官宣了这一里程碑式的成果。 △图源:美国能源部直播,美国能源部部长Jennifer Granholm讲话 现在,美国能源部官方账号的相关消息已经收获了4万+点赞和1.4万转发。 其实在美国能源部开直播前,就已有风声传出,然后迅速引来大波关
量子位
2023/02/28
3300
核聚变重大突破!人类首次实现输出能量超过输入
pymysql connect 连接mysql 报错keyerror255
pymysql connect 连接mysql 报错keyerror255;最近困了我两个多月的一个难题,搜这个标题进来的都可以看到搜索引擎提供了n^2篇解决方法的文章,那为什么还会困住我这么久呢?我不会百度吗?NO NO NO!!最大的问题是我的执行电脑和数据存储电脑不是同一台电脑!!
诡途
2020/10/16
1.7K0
Python_输入字符串使,每个字符的ASCII用列表输出
#输入字符串使,每个字符的ASCII用列表输出 def turn(s): L = [] for i in s: L.append(chr(ord(i)-32)) #先将字符通过ord函数转换成ASCII码,然后+32从大写变成小写(小变大-32),再通过chr函数转换成字符) return L def main(): s = str(input("请输入待转换的小写字母:")) print(turn(s)) main() ''' 例1、大小写字母转换
瑞新
2020/07/07
1.8K0
C语言 | 用指向指针的指针对5个字符串排序输出
解题思路:读者看着道题的时候,首先要知道什么时指针,指向指针的指针应该怎么用,一般在开发中不这样用,读者要看明白,这个很锻炼思维的。
小林C语言
2021/02/11
1.5K0
C语言 | 用指向指针的指针对5个字符串排序输出
C语言 | 用getchar读入两个字符,分别用putchar和printf输出
例48:编写程序,用getchar函数读入两个字符给c1和c2,然后分别用putchar函数和printf函数输出这两个字符。
小林C语言
2020/12/30
2.4K0
C语言 | 用getchar读入两个字符,分别用putchar和printf输出
EasyExcel导出时提示“单元格存储内容超过了最大 32767 个字符”的解决方法
解决用EasyExcel导出文件时,提示“The maximum length of cell contents (text) is 32,767 characters”的方法。
目的地-Destination
2023/05/01
8.3K0
EasyExcel导出时提示“单元格存储内容超过了最大 32767 个字符”的解决方法
点击加载更多

相似问题

带easyrtc的Safari WebRTC

22

有没有办法把Youtrack和Hipchat连接起来?

11

有没有办法把GIMP和PHP连接起来?

32

把资产和车把连接起来?

11

有没有办法把边界和尾风连接起来?

13
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文