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
}

现在的流程是这样的:

因此,第二个列表似乎可以使用此功能,而第一个列表不能。我需要选择这些项目,而不仅仅是突出显示。

我 运行 在 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 结束。