Bienvenue sur le forum !

Si vous souhaitez rejoindre la communauté, cliquez sur l'un de ces boutons !

Qt 5 : 5.9.1 - Qt Creator : 4.3.1 - Qt Installer : 2.0.3 - JOM : 1.1.2 - Qt Build suite : 1.7.0 - VS Qt 5 : 2.0.0

[Qt4-Mac] Mixer l'API Cocoa & Qt 4 fesable ?

Bonjour,

Je cherche à mixer ces 2 apis, notamment pouvoir assigner des delegates ( qui hérite de QObject & NSObject ) à un NSObject.

J'ai donc essayer ceci :
// declaration de la classs gui qui doit etre utiliser comme delagate par un object NSObject
class UIMain : public QMainWindow, public Ui::UIMain, public NSObject
{ ... };

// Cette classe prend en parametre l'object en question ainsi qu'un widget parent si necessaire et est implementer de cette façon
UIMain::UIMain( DMMemberAccount* a, QWidget* w )
: QMainWindow( w ), mAccount( a )
{
setupUi( this );
// on assigne cette fenêtre comme delegate de l'objet
[mAccount setDelegate:dynamic_cast<NSObject*>( this )];
// get days left for account
DMTransaction* daysLeft = [mAccount daysLeftUntilExpiration];
if ( !daysLeft )
qWarning( "nil transaction returned. Bad bad." );
}

// et j'implemente les membres pour la réception
void UIMain::transactionSuccessful( DMTransaction* theTransaction )
{
qWarning( "transactionSuccessful" );
//Okay this object got notified that its daysLeftUntilExpiration transaction is
//complete. So get the payload and update the UI
/*
NSString *daysLeft = [[theTransaction result] stringValue];
[_expirationTimeField setStringValue:[NSString stringWithFormat:@"This account expires in %@ days",daysLeft]];
*/

statusBar()->showMessage( tr( "Days Left: %1" ).arg( CocoaBridge::toQString( [[theTransaction result] stringValue] ) ) );
}
Problème :
* Je ne rentre jamais dans le membre transactionSuccessful ( ni aucun autre )
* L'application plante quelque seconde après avoir envoyé la requête daysLeft
* Le plantage semble du a une mauvaise connexion avec le delegate ( dynamic_cast( this ) renvoi une valeur négative alors que j'hérite bien de NSObject )

Si un utilisateur mac expérimenté passe par ici ça serait sympa ;)

Merci, P@sNox,

Réponses

  • C'est du C++ et du Objective-C en meme temps?

    Comment ca se compile un truc pareil?
  • Avec un compilateur Objective-C++ :D

    Et de manière générale j'ai trouvé la solution a mon problème, je passe en résolu.

    Pour mon plantage ça venait du fait qu'il est impossible de créer des classes C++ héritant de classe Objective-C et vice versa.

    P@sNox,
Connectez-vous ou Inscrivez-vous pour répondre.