Probleme am Mac, QIcon aus Plugin zu laden

Alles rund um die Programmierung mit Qt
Antworten
NoRulez
Beiträge: 208
Registriert: 19. Juni 2007 15:43

Probleme am Mac, QIcon aus Plugin zu laden

Beitrag von NoRulez »

Hallo,

ich habe mehrere plugins, wo ich auch pro plugin eine funktion habe, die mir das Icon des jeweiligen Plugins zurückliefert, Bsp.:

Code: Alles auswählen

QIcon MyPlugin::icon() {
return QIcon(":/images/picture.png");
} 
Wenn ich nun in der Hauptanwendung das plugin lade, stürzt das Programm mit folgender Fehlermeldung ab:

Code: Alles auswählen

Thread 0 Crashed: Dispatch queue: com.apple.main-thread
0 libSystem.B.dylib 0x9020e732 __kill + 10
1 libSystem.B.dylib 0x9020e724 kill$UNIX2003 + 32
2 libSystem.B.dylib 0x902a198d raise + 26
3 libSystem.B.dylib 0x902b7a44 abort + 93
4 QtCore 0x021c79d5 qt_message_output(QtMsgType, char const*) + 149
5 QtCore 0x021c7b9a qt_message(QtMsgType, char const*, char*) + 186
6 QtCore 0x021c7cd9 qFatal(char const*, ...) + 25
7 QtGui 0x0173bc8e qt_pixmap_thread_test() + 94
8 QtGui 0x0173c747 QPixmap::QPixmap() + 55
9 QtGui 0x0170f7e5 QPixmapIconEngine::addFile(QString const&, QSize const&, QIcon::Mode, QIcon::State) + 69
10 QtGui 0x0171013a QIcon::addFile(QString const&, QSize const&, QIcon::Mode, QIcon::State) + 90
11 QtGui 0x01710373 QIcon::QIcon(QString const&) + 67
12 MyPlugin.dylib 0x1475bd00 Plugins::MyProject::Formulas::MyPlugin::icon() const + 64 
Das komische an der Sache ist, das es unter Linux und Windows einwandfrei funktioniert.

Kann mir jemand sagen wie ich das Problem beheben kann?

Vielen dank im Voraus
LG NoRulez
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Wenn Du schon n Backtrace hast - was möchte qFatal() denn nun ausgeben?
Gibt ja nur zwei Möglichkeiten:

Code: Alles auswählen

static bool qt_pixmap_thread_test()
{
    if (!qApp) {
        qFatal("QPixmap: Must construct a QApplication before a QPaintDevice");
        return false;
    }
#ifndef Q_WS_WIN
    if (qApp->thread() != QThread::currentThread()) {
        qWarning("QPixmap: It is not safe to use pixmaps outside the GUI thread");
        return false;
    }
#endif
    return true;
}

MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
NoRulez
Beiträge: 208
Registriert: 19. Juni 2007 15:43

Beitrag von NoRulez »

Wenn ich es auf der Console ausführe, schreibt er:

Code: Alles auswählen

QPixmap: Must construct a QApplication before a QPaintDevice
Abort trap


LG NoRulez

edit: Habe das programm nun von der Konsole gestartet, nicht über den Finder
Zuletzt geändert von NoRulez am 11. Februar 2010 20:18, insgesamt 2-mal geändert.
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

??
Du sollst den Debuger benutzen und schauen welche der oben gezeigten Fehlermeldungen nun ausgeben werden sollte. Danach kannst Du dein Programm dementsprechend fixen.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
NoRulez
Beiträge: 208
Registriert: 19. Juni 2007 15:43

Beitrag von NoRulez »

Zu dem Zeitpunkt, wo ich das icon anfordere ist aber QApplication schon lange ausgeführt.

Code: Alles auswählen

int main(int argc, char *argv[]) {
     QApplication app(argc, argv);
.
.
.
LG NoRulez
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Ist es so schwer den Debugger zu benutzen und mal nachzuschauen warum er einen qFatal ausgibt? Aus lieber langer Weile wird Qt kein qFatal() hier ausgeben... und wenn er meint dass es noch kein qApp-Objekt gibt dann wird das wohl stimmen.
Aus dem Backtrace sieht man ja leider nicht den kompletten Callstack
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
NoRulez
Beiträge: 208
Registriert: 19. Juni 2007 15:43

Beitrag von NoRulez »

Den Debugger habe ich schon benutzt, das image file ist da, kein NULL Pointer, sollte bene funktionieren, tut es aber auf Mac nicht.
Unter windows und Linux funktioniert das ganze problemlos.

LG NoRulez
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Ich gebe auf... :(
Schau Dir endlich den Backtrace an oder poste ihn komplett damit wir sehen was los ist...
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Antworten