Icon für Programm wird unter MacOsX nicht geladen!

Alles rund um die Programmierung mit Qt
Antworten
flomll
Beiträge: 9
Registriert: 31. Juli 2009 13:29

Icon für Programm wird unter MacOsX nicht geladen!

Beitrag von flomll »

Hallo Leute,

ein alt bekanntes Problem. Mein Programm ladet das Icon nicht. Ich habe es mit Icon Composer erstellt. Meine Ordnerstruktur sieht folgend aus:

myapp.pro
images/myicon.icns

myapp.pro:

Code: Alles auswählen

# -------------------------------------------------
# Project created by QtCreator 2010-04-04T14:10:13
# -------------------------------------------------
QT += network \
    sql
TARGET = pixCRU
ICON = images/myicon.icns
TEMPLATE = app
SOURCES += main.cpp \
    mainwindow.cpp \
Habe das Icon dann noch in der Resourcedatei verlinkt also funktioniert der Zugriff über:

Code: Alles auswählen

:/icons/myicon
Das habe ich auch getestet und funktioniert. Hab ein Prefix angelegt mit icons und einen alias für das Icon mit myicon.

In der main.cpp habe ich dann folgenden Code:

Code: Alles auswählen

int main(int argc, char *argv[])
{
    Q_INIT_RESOURCE(pixcollection);
    QApplication a(argc, argv);
    MainWindow w;

    //w.setWindowIcon(QIcon(":/icons/pixc"));
    a.setWindowIcon(QIcon(QPixmap(":/icons/pixc")));

    w.show();
    return a.exec();
}
Jedoch wird nur das Standard Icon geladen. Hat jemand eine Idee? Bei der 4.6 Version sollte das so funktionieren denke ich oder?
flomll
Beiträge: 9
Registriert: 31. Juli 2009 13:29

Beitrag von flomll »

Bin dann noch über das Terminal unter

Code: Alles auswählen

myapp.app/Contents/Resources
Da ist auch das richtige Icon drinnen!!!
flomll
Beiträge: 9
Registriert: 31. Juli 2009 13:29

Beitrag von flomll »

Haben den Fehler gefunden. Man muss ein QIcon vorher anlegen und dann erst das Icon setzen.
franzf hat geschrieben:Ich hab mal kurz in die Sourcen geschaut, und da steht das:

Code: Alles auswählen

explicit QIcon(const QString &fileName); // file or resource name
Das heißt es ist nicht erlaubt, durch die Übergabe eines QString an setIcon implizit ein QIcon-Objekt zu erstellen.
Das ist hier aber eh nicht das Problem, sondern eher dass ":/images/button.png" noch kein QString ist, sondern erstmal nur ein const char*...
http://qtforum.de/forum/viewtopic.php?t ... icon+qicon

Hier die Lösung:

Code: Alles auswählen

    Q_INIT_RESOURCE(myapp);
    QApplication a(argc, argv);
    MainWindow w;


#ifdef MACOSX_ICON_SET
    QIcon icon(":/icons/icon_macosx");
#endif

    a.setWindowIcon(icon);
Antworten