Qt 的 QTest 不会 select 单击下拉列表中的项目
Qt's QTest doesn't select an item in a drop-down list with a click
有两个下拉菜单。我正在尝试单击 QComboBox 下拉列表中的项目。
为此,我创建了一个函数,为两个下拉菜单启动,摘录如下:
constexpr int DELAY{ 1000 };
void clickDropDown(int row, QComboBox *comboBox)
{
QListView *dropDownList = comboBox->findChild<QListView *>();
QModelIndex foundIndex{ dropDownList->model()->index(row, 0) };
QRect foundDropDownItem = dropDownList->visualRect(foundIndex);
QPoint foundDropDownItemPosition = foundDropDownItem.center();
QWidget *activeWidget = dropDownList->viewport();
QTest::mouseClick(activeWidget, Qt::LeftButton, Qt::NoModifier, foundDropDownItemPosition);
QTest::qWait(DELAY); // waits 1 second
}
现在的流程是这样的:
- 显示第一个下拉列表,
- 该项目被突出显示(鼠标单击)被选中,但实际上并没有选中,而不是选中
- UI 测试转到第二列,第一列显示列表中的第一个元素(即最上面的元素),尽管已突出显示;
- 第二个下拉列表中的一个项目被选中/选中
因此,第二个列表似乎可以使用此功能,而第一个列表不能。我需要选择这些项目,而不仅仅是突出显示。
我 运行 在 Ubuntu 21.04。似乎在 Windows 10 上运行良好。似乎在 Mac 上失败了。有什么建议可以让它发挥作用吗?
什么有效:
two clicks
+ Enter
,但这会在 MacOs 上崩溃。所以这不是真正的解决方案。
此外,它会破坏 dropDownList
对象,如果 make 有一个间隔,将导致崩溃。
还有什么不行: key down
N次。
有什么建议吗?
我自己找到了答案。
这是 Qt 的错误(截至 2021 年秋季),在此处描述:
https://bugreports.qt.io/browse/QTBUG-77772。鼠标点击的不是按钮,而是附近的某个点。为什么它被选中以及为什么它没有做出其他反应仍然是个谜。
决定: 我只在 Windows 和 Linux 上将此测试留给 运行,并在 Mac 结束。
有两个下拉菜单。我正在尝试单击 QComboBox 下拉列表中的项目。
为此,我创建了一个函数,为两个下拉菜单启动,摘录如下:
constexpr int DELAY{ 1000 };
void clickDropDown(int row, QComboBox *comboBox)
{
QListView *dropDownList = comboBox->findChild<QListView *>();
QModelIndex foundIndex{ dropDownList->model()->index(row, 0) };
QRect foundDropDownItem = dropDownList->visualRect(foundIndex);
QPoint foundDropDownItemPosition = foundDropDownItem.center();
QWidget *activeWidget = dropDownList->viewport();
QTest::mouseClick(activeWidget, Qt::LeftButton, Qt::NoModifier, foundDropDownItemPosition);
QTest::qWait(DELAY); // waits 1 second
}
现在的流程是这样的:
- 显示第一个下拉列表,
- 该项目被突出显示(鼠标单击)被选中,但实际上并没有选中,而不是选中
- UI 测试转到第二列,第一列显示列表中的第一个元素(即最上面的元素),尽管已突出显示;
- 第二个下拉列表中的一个项目被选中/选中
因此,第二个列表似乎可以使用此功能,而第一个列表不能。我需要选择这些项目,而不仅仅是突出显示。
我 运行 在 Ubuntu 21.04。似乎在 Windows 10 上运行良好。似乎在 Mac 上失败了。有什么建议可以让它发挥作用吗?
什么有效:
two clicks
+ Enter
,但这会在 MacOs 上崩溃。所以这不是真正的解决方案。
此外,它会破坏 dropDownList
对象,如果 make 有一个间隔,将导致崩溃。
还有什么不行: key down
N次。
有什么建议吗?
我自己找到了答案。
这是 Qt 的错误(截至 2021 年秋季),在此处描述: https://bugreports.qt.io/browse/QTBUG-77772。鼠标点击的不是按钮,而是附近的某个点。为什么它被选中以及为什么它没有做出其他反应仍然是个谜。
决定: 我只在 Windows 和 Linux 上将此测试留给 运行,并在 Mac 结束。