wxWidgets: 1-2 Fragen zu Sizern/Notebooks/GlCanvases/Größenänderungen etc.



  • Also nochmal zu 1.)
    Man kann aber nicht zufällig herausfinden, welches Verhalten von Fall zu Fall genutzt wird, oder? ..Naja, ein veto() kann ja nicht schaden..

    Was ich eigentlich sagen wollte:
    Kann es sein, dass OnSelChange() veraltet ist?!
    - Im event.h hier steht in Zeile 3383 nur "virtual void QueueEvent(wxEvent *event);"
    - In den Docs zum wxNotebook wird die Funktion aber als Mitglied von wxNotebook angagaben: "void wxNotebook::OnSelChange(wxBookCtrlEvent &event)"
    http://docs.wxwidgets.org/trunk/classwx_notebook.html#a24783577628b3da1537a9476629cc72b
    - Und was mich tatsächlich am meisten wundert: Wenn man danach sucht, findet die Docs-intere Suche keinen Eintrag dazu...

    Ich habe so das Gefühl, es wurde einfach vergessen, den Eintrag komplett herauszunehmen.. Anders kann ich mir das zumindest nicht erklären.



  • Klon457 schrieb:

    Was ich eigentlich sagen wollte:
    Kann es sein, dass OnSelChange() veraltet ist?!
    - Im event.h hier steht in Zeile 3383 nur "virtual void QueueEvent(wxEvent *event);"
    - In den Docs zum wxNotebook wird die Funktion aber als Mitglied von wxNotebook angagaben: "void wxNotebook::OnSelChange(wxBookCtrlEvent &event)"
    http://docs.wxwidgets.org/trunk/classwx_notebook.html#a24783577628b3da1537a9476629cc72b
    - Und was mich tatsächlich am meisten wundert: Wenn man danach sucht, findet die Docs-intere Suche keinen Eintrag dazu...

    Ich habe so das Gefühl, es wurde einfach vergessen, den Eintrag komplett herauszunehmen.. Anders kann ich mir das zumindest nicht erklären.

    Was genau ist denn das Problem? QueueEvent queued halt ein Event, wenn es sofort durch muss, benutz ProcessEvent().



  • Kein Problem! Ich frage mich nur, wo die OnSelChange-Funktion geblieben ist. Und selbst die Suchfunktion scheint das nicht zu wissen.
    Ich finde es ... mysteriös.



  • nvm



  • np 😉



  • Zu früh gefreut..

    7. löst leider nicht die Probleme von 6..

    Hier nochmal meine Situation in ASCII-art...
    Fenster-Höhe bleibt gleich, wxStaticText und wxTextCtrl im vertikalen wxBoxSizer.

    Soll_1) Breites Fenster (init):
     __________________________________
    | Ein langer Text im wxStaticText  |
    |----------------------------------|
    |                                  |
    |                                  |
    |     --wxTextCtrl-Bereich---      |
    |                                  |
    |__________________________________|
    
    Soll_2: Schmales Fenster (user):
     __________________
    | Ein langer Text  |
    | im wxStaticText  |
    |------------------|
    |                  |
    |wxTextCtrl-Bereich|
    |                  |
    |__________________|
    
    Ist (soll aber nicht): Abgeschnittener wxStaticText:
     __________________
    | Ein langer Text  |
    |------------------|
    |                  |
    |                  |
    |wxTextCtrl-Bereich|
    |                  |
    |__________________|
    

    Ich kann mir nicht vorstellen, dass das nur über Umwege zu machen ist. Das würde allem, was ich von wxWidgets kenne widersprechen..
    Ich hoffe aber, dass mehrere Wege zum Ziel führen. Also wer kenn den einen oder anderen - oder mehrere?



  • Ruf mal Layout() bzw Fit() auf, nachdem du den Text geändert hast. Das sollte das eigentlich lösen. Ich hab auch so meine Probleme mit wxSizer um ehrlich zu sein :D. Aber eigentlich konnte ich sie immer lösen.

    http://docs.wxwidgets.org/trunk/overview_sizer.html
    http://docs.wxwidgets.org/trunk/overview_windowsizing.html



  • Wow, du bist ja nicht nur 'wxKompetent', sondern auch noch schnell wie der Blitz.

    Mit Layout() und Fit() habe ich's auch schon probiert - ohne Erfolg. Ich habe das allerdings noch nicht ganz überblickt: Die Funktionen gibt es ja einmal im Sizer und im Window.. ..Wo da der Unterschied liegt!?

    Das schöne (bis jetzt), ist ja gerade, dass der Text nicht manuell geändert wird/ werden muss. Das Umsortieren in neue Zeilen geht ja schon automatisch, wenn man das Fenster verkleinert. Es sieht aber nicht so aus, als würde auch die wxStaticText-Größe automatisch aktualisiert..



  • Du musst das Fit() auf dem Eltern Element des wxStaticText aufrufen.
    Minmales Beispiel das ich grade getestet habe:

    #include <wx/wx.h>
    
    class MainWindow : public wxFrame
    {
        wxBoxSizer* m_boxSizer;
        wxStaticText* m_text;
        wxButton* m_button;
    
        DECLARE_EVENT_TABLE();
    public: 
        MainWindow()
            : wxFrame(NULL, -1, "Test")
        {
            m_boxSizer = new wxBoxSizer(wxVERTICAL);
            m_text = new wxStaticText(this, wxID_ANY, "TEST LABEL");
            m_button = new wxButton(this, wxID_ANY, "Test");
            wxSizerFlags staticFlags;
            staticFlags.Border(wxALL, 10);
            m_boxSizer->Add(m_text, staticFlags);
            m_boxSizer->Add(m_button);
            SetSizerAndFit(m_boxSizer);
    
        }
    
        void OnButton(wxCommandEvent&)
        {
            m_text->SetLabel("really long text to test something with wxwidgets that probably gonna brake it and no idea how to solve it");
            Fit();
        }
    
        virtual ~MainWindow()
        {}
    
    };
    
    BEGIN_EVENT_TABLE(MainWindow, wxFrame)
    EVT_BUTTON(wxID_ANY, MainWindow::OnButton)
    END_EVENT_TABLE()
    
    class Application : public wxApp
    {
    public:
        virtual bool OnInit()
        {
            MainWindow* f = new MainWindow();
            SetTopWindow(f);
            f->CenterOnScreen();
            f->Show();        
            return true;
        }
    };
    
    IMPLEMENT_APP(Application);
    

    edit: A bissl verschönert mit ner Border



  • Besser spät als nie... Mein treuer alter PC ist letztens geschmolzen und irgendwie bin ich hierdrüber hinweg gekommen.

    Also kurzer Nachtrag: Mit Wrap() und Layout() scheint es zu gehen.. Fit() ändert mir ungewollte die Größen.

    Ist aber nicht so, als hätte ich keine neuen Probleme (->neuer Beitrag).


Anmelden zum Antworten