[SOLVED] compile error with QMessageBox::clickedButton() == QPushButton* in VS2012



  • I am in the process up upgrading my code from Qt4.7 w/ VS2008 to Qt5 w/ VS2012. The very last compile error I am getting is with regards to checking which custom button was clicked on a QMessageBox. Here is the code:

    @QPushButton *renameButton = msgBox.addButton(tr("Rename"), QMessageBox::ActionRole);
    QPushButton *deleteButton = msgBox.addButton(tr("Delete"), QMessageBox::DestructiveRole);
    msgBox.addButton(QMessageBox::Cancel);

    msgBox.exec();

    if( msgBox.clickedButton() == deleteButton)
    {
    }
    @

    The issue is in the final if statement, I get the error:

    error C2440: '==' : cannot convert from 'QPushButton *' to 'QAbstractButton *'

    I have tried qobject_casting the clickedButton to a QPushButton:

    @QPushButton *clickedButton = qobject_cast<QPushButton *>(msgBox.clickedButton());@

    But I get this error:

    'qobject_cast' : none of the 2 overloads could convert all the argument types

    Any suggestions on how to fix this?


  • Lifetime Qt Champion

    Hi,

    Did you @#include <QPushButton>@ ?



  • WOW, that was it. Thank you.


  • Lifetime Qt Champion

    You're welcome !

    Don't forget to update the thread's title to solved so other forum users may know that a solution has been found :)


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.