[gtkmm] Z-Position des Widgets



  • Hallo,

    ich habe neulich mit gtkmm angefangen.
    Ich möchte einen Widget unter anderen hinsetzen. Dafür habe ich Gtk::Table ausgewählt.

    #include <gtkmm.h> 
    int main(int argc, char *argv[])
    { 
      Gtk::Main kit(argc, argv); 
      Gtk::Window window;
    
      Gtk::Table tbl(1,3, true);
      Gtk::Entry entry; 
      Gtk::Button btn;
      tbl.attach(entry, 0, 2, 0 , 1); 
      tbl.attach(btn, 1, 3, 0 , 1); // btn soll drüber sein
      window.add(tbl); 
    
      window.show_all();
    
      Gtk::Main::run(window);
      return 0; 
    }
    

    Leider wird „entry“ immer drüber angezeigt, was ich nicht wollte.
    Ich habe ein bißchen experimentiert, und kann nicht finden,
    wie ich die Reihenfolge der angezeigten Widgets steuern kann.



  • Es macht recht wenig Sinn, einen Gtk::Table mit nur einer Zeile zu erstellen, dann aber die Widgets so hinzufügen zu wollen, dass sie vertikal gestapelt sein sollen (was zwei Zeilen beansprucht). Dazu kommt, dass attach keine "insert and push back"-Methode ist, die bereits vorhandene Widgets nach unten schiebt oder so. Hier musst du dir über die Einfügereihenfolge Gedanken machen.
    Abgesehen davon... hast du dir schon überlegt, ob eine Gtk::VBox nicht ausreicht?

    Cheers

    GPC



  • Ich mochte die Widgets nicht vertikal stapeln, sonder in „z-order“.



  • Mmmaloy schrieb:

    Ich mochte die Widgets nicht vertikal stapeln, sonder in „z-order“.

    Mit welchen Hintergedanken? Wie stellst du dir das vor? Willst du die bei bestimmten Aktionen austauschen? Oder einfach nur ein Label frei nem Fenster platzieren und bewegen können, ohne Layout?

    Drück dich mal konkreter aus dann gibts auch konkretere Antworten.



  • Ich möchte einen DockWidget erstellen.
    HandleBox passt nicht ganz. Beim Drag auf den Widget sollte im Zentrum des Widgets ein Control erscheinen, der die Dock-Positionon bestimmt. Das sollte ungefähr so aussehen, wie es in MSVS gemacht wird. Ich habe schon gestern recherchiert: Gtk übernimmt die Abbildung der Widgets, und die z-order kann man nicht steuern. Das Problem kann mit Hilfe von Popup-Window gelöst werden, aber das löst mein Problem nur teilweise.
    Jetzt bin ich beim überlegen, wie ich an Problem anders angehe.


Anmelden zum Antworten