【问题标题】:Problems with QTest::mouseClick on QListWidgetQTest::mouseClick 上 QListWidget 的问题
【发布时间】:2012-05-30 11:57:34
【问题描述】:

我正在尝试使用 QTest 进行一些测试。我有一个 QListWidget,我想点击它来进行选择。但是点击之后,什么都没有被选中。有人有什么想法吗?

这是我的测试课

void TestGui::List() {
    TestDialog dlg;
    dlg.show ();

    // Click on the centre of the second object
    QListWidget *list = dlg.ListWidget ();
    QListWidgetItem *item = list->item ( 1 );
    QRect rect = list->visualItemRect ( item );
    QTest::mouseClick ( list, Qt::LeftButton, 0, rect.center() );

    // Check if something was selected
    QCOMPARE ( list->currentRow (), 1 );
    QVERIFY ( list->currentItem () != NULL );
    QCOMPARE ( list->currentItem ()->text (), QString ( "Two" ) );
}

下面是测试类

class TestGui: public QObject {
    Q_OBJECT

private slots:
    void List();
};

这里是用来显示问题的TestDialog类

class TestDialog : public QDialog {
    Q_OBJECT

public:
    TestDialog ( QWidget *parent = NULL )
    : QDialog ( parent, Qt::CustomizeWindowHint | Qt::WindowCloseButtonHint ) {
        QVBoxLayout *layout = new QVBoxLayout ( this );

        m_list = new QListWidget ( this );
        m_list->addItem ( "One" );
        m_list->addItem ( "Two" );
        m_list->addItem ( "Three" );
        m_list->addItem ( "Four" );
        layout->addWidget ( m_list );

        QPushButton *close_button = new QPushButton( "Close" );
        connect ( close_button, SIGNAL ( clicked () ), this, SLOT ( close () ) );
        layout->addWidget ( close_button );

        setWindowTitle( "Test" );
    }

    QListWidget *ListWidget ( void ) {
        return m_list;
    };

private:
    QListWidget *m_list;

}; // TestDialog

【问题讨论】:

    标签: qtestlib


    【解决方案1】:

    经过一番思考,事实证明,点击需要在视图小部件上,而不是列表本身。所以这条线应该是这样的

    QTest::mouseClick (list->viewport(), Qt::LeftButton, 0, rect.center());

    谢谢

    【讨论】:

    • 太棒了!这在 2017 年 9 月仍然有效(我使用 PyQt5 顺便说一句)
    • 它在 2017 年 10 月仍然有效。但是,它不适用于双击...
    • 非常感谢!我努力寻找它不起作用的原因!
    猜你喜欢
    • 2017-02-19
    • 1970-01-01
    • 2015-10-07
    • 1970-01-01
    • 1970-01-01
    • 2011-01-19
    • 1970-01-01
    • 2016-11-30
    • 2017-11-07
    相关资源
    最近更新 更多