Ein paar Fragen zu wxWidgets



  • Hallo,

    ich wechsle gerade für ein kleines Projekt von Qt zu wxWidgets und dabei sind jetzt ein paar Fragen aufgekommen...

    1. Kann man immer damit rechnen, dass alle Controls/Widgets, die man in einem Sizer oder Window platziert, von diesem auch zerstört werden und das MainWindow am Ende von wxApp? Und was passiert mit Pointern, die keine Controls sind, wie zB das String-Array hier(Parameter choices[] )? Erstellt wxComboBox eine lokale Kopie des Arrays oder muss ich dafür sorgen, dass der Pointer auch nach Erstellen der ComboBox noch auf gültigen Speicher zeigt?

    2. Was hat man sich dabei gedacht, die Include-Pfade und Lib-Pfade per wx-config zu übergeben? Aus Bequemlichkeit schreibe ich halt immer #include <wx/wx.h>. Das Problem ist jetzt, dass die Code completion damit nur sehr lückenhaft funktioniert. Viele Klassen und (fast) alle Konstanten findet der Indexer nicht, wxApp findet er bspw., wxDialog hingegen nicht!?? Ich habe jetzt die Include-Pfade von wx-config --cxxflags zusätzlich eingetragen und es funktioniert halbwegs... aber damit wäre wx-config ja wieder überflüssig... oder mache ich was falsch?

    3. Wie verbindet man mehrere "signals" mit einem "slot"? Es soll bspw. auf die Events Frame-[X] und File->Exit



  • wxJürgen schrieb:

    Hallo,

    ich wechsle gerade für ein kleines Projekt von Qt zu wxWidgets und dabei sind jetzt ein paar Fragen aufgekommen...

    1. Kann man immer damit rechnen, dass alle Controls/Widgets, die man in einem Sizer oder Window platziert, von diesem auch zerstört werden und das MainWindow am Ende von wxApp? Und was passiert mit Pointern, die keine Controls sind, wie zB das String-Array hier(Parameter choices[] )? Erstellt wxComboBox eine lokale Kopie des Arrays oder muss ich dafür sorgen, dass der Pointer auch nach Erstellen der ComboBox noch auf gültigen Speicher zeigt?

    2. Was hat man sich dabei gedacht, die Include-Pfade und Lib-Pfade per wx-config zu übergeben? Aus Bequemlichkeit schreibe ich halt immer #include <wx/wx.h>. Das Problem ist jetzt, dass die Code completion damit nur sehr lückenhaft funktioniert. Viele Klassen und (fast) alle Konstanten findet der Indexer nicht, wxApp findet er bspw., wxDialog hingegen nicht!?? Ich habe jetzt die Include-Pfade von wx-config --cxxflags zusätzlich eingetragen und es funktioniert halbwegs... aber damit wäre wx-config ja wieder überflüssig... oder mache ich was falsch?

    3. Wie verbindet man mehrere "signals" mit einem "slot"? Es soll bspw. auf die Events Frame-[X] und File->Exit

    1.) Ja, kann man. Der Parent übernimmt immer den Besitz und damit die Speicherverwaltung. Und die Combobox will keinen Pointer auf dem Heap, das kann auch auf dem Stack erzeugt werden. Aber nimm doch einfach wxStringArray, da brauchts nur ne Referenz. Siehe Überladung.

    2.) Das ist jetzt ein gcc-spezifisches Problem, da kann ich nicht direkt weiterhelfen. Aber was hindert dich daran das selber in deiner IDE einzustellen?

    3.) Wenn das Event einen eigenen Parameter hat, kommst um eine 2te Funktion nicht rum. Aber wieso willst du für das X extra eine Funktion?
    Wenn man den Mainframe als TopLevelWindow gesetzt hat in wxApp, dann wird das Programm auch geschlossen wenn das X gedrückt wird.



  • 3.) Beim MenuEvent brauchst du den Parameter bestimmt, weil du ja erstmal herausfinden musst, welches MenuItem angeklickt wurde (außer du hast nur eines). Ansonsten: 2 Funktionen, die eine dritte (z.B. CloseCheck()) aufrufen.


Anmelden zum Antworten