 |
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
4paws
Anmeldungsdatum: 19.02.2025 Beiträge: 4
|
Verfasst am: 30.08.2025, 11:16 Titel: GtkNotebook Tabs |
|
|
Hallo,
Ich beschäftige mich gerade ein wenig mit Gtk und speziell mit GtkNotebook und insbesondere mit den Tabs.
Ich habe in den Tabs eine Box, ein Entry und einen Button eingefügt.
Die Eigenschaft „scrollable” ist auf TRUE gesetzt.
Wenn mehr als ein Tab vorhanden ist, kann man nicht scrollen und die Darstellung ist völlig seltsam.
Wenn die Eigenschaft „scrollable” auf FALSE gesetzt ist, sieht es gut aus, aber es gibt keine Scroll-Funktion. Das wird schwierig, wenn ein paar mehr Tabs geöffnet sind.
Vielleicht hat ja jemand eine Idee, wie man das Problem lösen kann.
[code]
' Freebasic binding gtk+-3.16.6
' Freebasic 1.10.3
#include once "gtk/gtk3.bi"
type newBox
as GtkWidget ptr widget
as GtkNotebook ptr notebook
end type
declare function get_NewTab(byval notebook as GtkNotebook ptr) as GtkNotebook ptr
declare sub CloseNotebookTab(byval button as GtkButton ptr, byval newTab as newBox ptr)
declare sub SetNotebookTab(byval widget as GtkWidget ptr, byval newTab as newBox ptr)
sub CloseNotebookTab(byval button as GtkButton ptr, byval newTab as newBox ptr)
print gtk_notebook_page_num(newTab->notebook, newTab->widget)
end sub
sub SetNotebookTab(byval widget as GtkWidget ptr, byval newTab as newBox ptr)
var page_num= gtk_notebook_page_num(GTK_NOTEBOOK(newTab->notebook), newTab->widget)
print page_num
gtk_notebook_set_current_page(GTK_NOTEBOOK(newTab->notebook), page_num)
end sub
function get_NewTab(byval notebook as GtkNotebook ptr) as GtkNotebook ptr
var newTab= g_new0(newBox, 1)
newTab->notebook= notebook
var NewNoteBookTabBox= gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 2)
var ScrolledWindow= g_object_new(GTK_TYPE_SCROLLED_WINDOW,_
"hscrollbar_policy", GTK_POLICY_AUTOMATIC,_
"vscrollbar_policy", GTK_POLICY_AUTOMATIC,_
"overlay-scrolling", false,_
"window_placement" , GTK_CORNER_TOP_LEFT,_
NULL)
gtk_container_add(GTK_CONTAINER(ScrolledWindow), GTK_WIDGET(gtk_text_view_new()))
var entry= gtk_entry_new()
var button= gtk_button_new()
gtk_widget_set_tooltip_text(button, "Tab schließen")
var TabButtonCloseImg= gtk_image_new_from_icon_name("window-close", GTK_ICON_SIZE_BUTTON)
gtk_button_set_image(GTK_BUTTON(button), TabButtonCloseImg)
gtk_button_set_relief(GTK_BUTTON(button), GTK_RELIEF_NONE)
gtk_box_pack_start(GTK_BOX(NewNoteBookTabBox), entry, false, false, 0)
gtk_box_pack_start(GTK_BOX(NewNoteBookTabBox), button, false, false, 0)
newTab->widget= ScrolledWindow
g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(@CloseNotebookTab()), newTab)
g_signal_connect(G_OBJECT(GTK_WIDGET(entry)), "grab-focus", G_CALLBACK(@SetNotebookTab()), newTab)
gtk_notebook_append_page(GTK_NOTEBOOK(notebook), newTab->widget, NewNoteBookTabBox)
gtk_widget_show(ScrolledWindow)
gtk_widget_show_all(NewNoteBookTabBox)
return notebook
end function
gtk_init(0, 0)
var MainWindow= gtk_window_new(GTK_WINDOW_TOPLEVEL)
gtk_window_set_default_size(GTK_WINDOW(MainWindow), 800, 600)
var Notebook= gtk_notebook_new()
gtk_notebook_set_scrollable(GTK_NOTEBOOK(Notebook), true)
get_NewTab(GTK_NOTEBOOK(Notebook))
get_NewTab(GTK_NOTEBOOK(Notebook))
get_NewTab(GTK_NOTEBOOK(Notebook))
gtk_container_add(GTK_CONTAINER(MainWindow), GTK_WIDGET(get_NewTab(GTK_NOTEBOOK(Notebook))))
gtk_widget_show_all(GTK_WIDGET(MainWindow))
gtk_main()
LG und danke fürs lesen und vielleicht einer Idee.
4Paws |
|
Nach oben |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4708 Wohnort: ~/
|
Verfasst am: 30.08.2025, 17:08 Titel: |
|
|
Ich kenne mich zugegebenermaßen überhaupt nicht in GTK aus und weiß daher nicht, ob mein Vorschlag umsetzbar ist: Lässt sich auf der jeweiligen (nicht scrollbaren) Tab-Seite ein Frame anlegen, der selbst scrollbar ist und in den alle Elemente gelegt werden, die auf der Tab-Seite erscheinen sollen? Der Frame dient dann lediglich als Container, der die Scroll-Funktionalität übernimmt. _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
 |
4paws
Anmeldungsdatum: 19.02.2025 Beiträge: 4
|
Verfasst am: 30.08.2025, 18:32 Titel: |
|
|
Hallo,
Das Problem liegt ja nicht im Tab, sondern es sieht
für MICH so aus das die Einstellungen der GtkBox, GtkEntry und GtkButton (Fill, Expand und so weiter)
völlig falsch umgesetzt werden denke ich zumindest.
Ich habe es schon mit einem GtkScrolledWindow probiert war auch nichts.
Ich habe auch mit einem GtkLabel herumgespielt, mit GtkScrolledWindow, GtkBox, GtkButton ging allerdings, um das
vernünftig aufzubauen wird das ein ziemliches Geraffel.
LG |
|
Nach oben |
|
 |
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
|