Important: Please read the Qt Code of Conduct -

Simulation click() for QMessageBox::question don't work properly

  • I have a wrapper for QMessageBox::question

    @bool Ask( const QString& text )
    QMessageBox::StandardButton res;

    res = QMessageBox::question(    
        QObject::tr( "Confirm Action" ),
        QMessageBox::Yes | QMessageBox::No); 

    return res == QMessageBox::Yes;

    And code that simulates pushing Ok button in the test

    @QList<QPushButton*> allPButtons = dialog->findChildren<QPushButton*>();
    for( auto it : allPButtons )
    if( dialog->buttonRole( it ) == QMessageBox::YesRole )

    It closes the dialog, BUT the result (res variable) is QMessageBox::No.
    So the Ask function returns false.

    What need to fix to get QMessageBox::Yes in the result of QMessageBox::question;

    PS: when user clicks the Ok button by mouse - all works properly.

  • Hi,

    to understand what's going wrong print with qDebub() the text of clicked button

  • Sorry for every one, I found the problem. It in my code for processing dialogs in the tests. After some corrections all works properly.

Log in to reply