gpt4 book ai didi

c++ - 如何用QTest测试QTableView版本?

转载 作者:太空宇宙 更新时间:2023-11-04 14:16:44 25 4
gpt4 key购买 nike

我想用 QTest 模拟 QTableView 的一个单元格的版本。

我尝试了不同的方法但没有成功:

qtableview->show(); 
/* I think that in my unit test I should no need
that, could you confirm ? */

QModelIndex modelIndex = qtableview->model()->index(1,1);
//I have tested that modelIndex is valid and that I retrieved expected data

/*First try: set the currentIndex on modelIndex
thinking that keyClicks on qtableview will work
on selected element of the tableview*/
qtableview->setCurrentIndex(modelIndex );
QTest::KeyClicks(qtableview,“Hello Word”);
QCOMPARE->index(1,1).data(), “Hello World”); // —> FAILED

/*Second approach
Get the cell widget*/
QWidget * qwidget = qtableview->indexWidget( modelIndex );
//—> No test since the qwidget is NULL… why ?

/*Third approach
Get the cell widget through the delegate*/
QWidget * qwidget =
qtableview->itemDelegate( modelIndex )->createEditor(qtableview,
QStyleOptionViewItem(),
modelIndex );
QTest::KeyClicks(qwidget ,“Hello Word”);
QCOMPARE->index(1,1).data(), “Hello World”); // —> FAILED

我也添加了三个方法都没有成功

QTest::mouseDClick(qtableview)
QTest::KeyClicks(qtableview,“Hello Word”);

感谢您的帮助。

最佳答案

我认为您需要在显示小部件后处理事件。如果 QListView 被隐藏,它可能不会做任何事情(它应该如此!)。看看 qWaitForWindowShown(qtableview) 是否可以解决问题。如果这不起作用,请通过调用 QCoreApplication::processEvents() 直接运行事件循环。看看 qWaitForWindowShown,它可能会旋转一个事件循环。

关于c++ - 如何用QTest测试QTableView版本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10507571/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com