Hallo,
ich suche ein Widget/Container wo die eingefügten Widgets sich automatisch verteilen, wie die Icons der Ordner und Dateien im Dateiordner (z. B. Nautilus). Also ich meine, wenn ich das Fenster in der Breite ändere, dass die Widgets, die nicht mehr nebeneinander passen in die nächste Zeile rutschen bzw. umgekehrt. Ich hoffe ihr wisst was ich meine.
Ich habe zwar schon die Doku von gtkmm.org durchsucht, aber ich finde nichts oder sehe es einfach nicht.
Gibt es dafür ein Widget/Cntainer? Oder muss ich die Größenänderung überwachen und die eingefügten Widgets entsprechend neu anordnen?
Gtkmm, widget/container wie der Dateiordner
Re: Gtkmm, widget/container wie der Dateiordner
Beware of programmers who carry screwdrivers.
Re: Gtkmm, widget/container wie der Dateiordner
Erstmal danke für den Hinweis.
Nein, habe ich bisher noch nicht. Habe mir jetzt aber mal die Referenzen angesehen. Sehe ich das richtig, das ich dort die Anzahl der Icons, die nebeneinander (colums) sein soll vorgebe? Sprich, egal wie Breit das Fenster ist, die Anzahl der Icons in einer Zeile bleibt immer gleich. Und dann hat IconView einen weißen Hintergrund, der sollte eher Transparent sein.
Nein, habe ich bisher noch nicht. Habe mir jetzt aber mal die Referenzen angesehen. Sehe ich das richtig, das ich dort die Anzahl der Icons, die nebeneinander (colums) sein soll vorgebe? Sprich, egal wie Breit das Fenster ist, die Anzahl der Icons in einer Zeile bleibt immer gleich. Und dann hat IconView einen weißen Hintergrund, der sollte eher Transparent sein.
Re: Gtkmm, widget/container wie der Dateiordner
das würde ich so verstehen, dass du die nicht vorgeben musst.gtk_icon_view_set_columns () hat geschrieben:Sets the ::columns property which determines in how many columns the icons are arranged. If columns is -1, the number of columns will be chosen automatically to fill the available area.
Den Hintergrund müsstest du mit gtk_widget_override_background_color() beeinflussen können. Eine andere Farbe sollte auf jeden Fall möglich sein, aber du übergibst ja eine GdkRGBA-Farbe. Wenn du Glück hast, bedeutet das A "Transparenz".
Beware of programmers who carry screwdrivers.
Re: Gtkmm, widget/container wie der Dateiordner
Doch wieder an den falschen stellen geschaut.
Ok, ich werde es am Wochenende mal ausprobieren.
Ok, ich werde es am Wochenende mal ausprobieren.
Re: Gtkmm, widget/container wie der Dateiordner
So, habe schon mal ein wenig probiert. Das mit dem Hintergrund funktioniert schon mal. Das set_columns(-1) scheint nur beim Programmstart Einfluss zu haben. Sprich, wenn das Fenster geöffnet wird, werden die Icons automatisch entsprechend der Fensterbreite angeordnet. Wenn ich die Fensterbreite ändere bleibt die Anzahl pro Zeile aber leider konstant.
Re: Gtkmm, widget/container wie der Dateiordner
Meine Lösung für ein "Ähnliches" Problem war, das ich das signal_expose_event() des widgets abfange und dort dann die Anweisungen für den Container Aufbau platziert habe. Bei mir ging es darum widgets im Container an Ort und stelle zu halten, egal wie groß der Container ist.
sieht bei mir so aus:
sieht bei mir so aus:
Code: Alles auswählen
Widget::Widget()
{
[. . . ]
set_app_paintable(true);
m_paintbox.signal_expose_event().connect(
sigc::mem_fun(this, &Widget::_expose_event), true);
[. . . ]
}
// set borderwith for paintbox when widget resize
// to hold controllers in place
bool Widget::_expose_event(GdkEventExpose *event)
{
int x, y, width, height, depth;
m_paintbox.get_window()->get_geometry(x, y, width, height, depth);
m_paintbox.set_border_width(height/20);
return false;
}