我想在使用pytest-qt进行测试时以编程方式单击QGroupBox的builtin(启用)复选框。
但我无法通过属性或类似方法了解如何访问groupbox的基础复选框小部件。
基本上我可以在我的测试中使用.setChecked(True)
方法,但这不是真正的"鼠标点击。
是否可以直接访问groupbox的复选框小部件?
答案 0 :(得分:1)
点击操作涉及pressButton和releaseButton鼠标事件。因此,我们可以通过向目标小部件发送两个连续事件来模拟单击操作。
Widget::Widget(QWidget* parent)
: QWidget(parent)
, m_groupBox(new QGroupBox)
{
m_groupBox->setCheckable(true);
QPushButton* generateClickButton = new QPushButton("generate click");
connect(generateClickButton, &QPushButton::clicked, [this]
{
clickAt(m_groupBox, Qt::LeftButton);
});
setLayout(new QVBoxLayout);
layout()->addWidget(m_groupBox);
layout()->addWidget(generateClickButton);
resize(100, 100);
}
Widget::~Widget()
{}
void Widget::clickAt(QWidget* receiver, Qt::MouseButton button)
{
if (receiver)
{
QMouseEvent pressEvent(QEvent::MouseButtonPress, receiver->pos(), button, 0, 0);
QMouseEvent releaseEvent(QEvent::MouseButtonRelease, receiver->pos(), button, 0, 0);
QApplication::sendEvent(receiver, &pressEvent);
QApplication::sendEvent(receiver, &releaseEvent);
}
}
更好的选择: QTest :: mouseClick做同样的事情