Все от стиля зависит.
C++ (Qt)
int main(int argc, char *argv[])
{
        QApplication a(argc, argv);
 
        QApplication::setStyle( "plastique" );
 
        QMessageBox::critical( 0, "Alarm", qVersion() );
        return 0;
}
 
У некоторых стилей иконка выводится (windows, motif, cde, plastique).
По умолчанию у меня стоит стиль Oxygen и иконка в диалогах QMessageBox не выводится.