Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

GtkNotebook Tabs

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Bibliotheken
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
4paws



Anmeldungsdatum: 19.02.2025
Beiträge: 4

BeitragVerfasst am: 30.08.2025, 11:16    Titel: GtkNotebook Tabs Antworten mit Zitat

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. lächeln

4Paws
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4708
Wohnort: ~/

BeitragVerfasst am: 30.08.2025, 17:08    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
4paws



Anmeldungsdatum: 19.02.2025
Beiträge: 4

BeitragVerfasst am: 30.08.2025, 18:32    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Bibliotheken Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
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.

 Impressum :: Datenschutz