Hello all,
I need help with my app in gtk4 in C.
I have there notebook and at third tab is horizontal box (called hBox3) and in it is scrolled window and inside it several another boxes and widgets…
I need that hBox3 vertically expand in whole window app and I do not know how to do that.
Please could anybody help me. Here is my code:
#include <gtk/gtk.h>
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <string>
using namespace std;
static void appActivate (GApplication *app, gpointer user_data)
{
GtkWidget *window = gtk_application_window_new (GTK_APPLICATION (app));
gtk_widget_show (window);
g_signal_connect(G_OBJECT(window), "destroy", G_CALLBACK(gtk_window_destroy), NULL);
GtkWidget* vBoxVsechno = gtk_box_new (GTK_ORIENTATION_VERTICAL,0);
gtk_window_set_child (GTK_WINDOW (window), vBoxVsechno);
GtkWidget* pokusnejLabel = gtk_label_new("pokus");
gtk_box_append (GTK_BOX (vBoxVsechno), pokusnejLabel);
// notebook notebook notebook notebook notebook notebook notebook notebook notebook notebook notebook notebook notebook notebook notebook notebook notebook
GtkWidget* zalozkovnik = gtk_notebook_new();
gtk_box_append (GTK_BOX (vBoxVsechno), zalozkovnik);
gtk_notebook_set_tab_pos (GTK_NOTEBOOK (zalozkovnik), GTK_POS_TOP);
GtkWidget* hBox1 = gtk_box_new (GTK_ORIENTATION_HORIZONTAL,0);
gtk_notebook_append_page (GTK_NOTEBOOK (zalozkovnik), hBox1, gtk_label_new ("list 1"));
GtkWidget* hBox2 = gtk_box_new (GTK_ORIENTATION_HORIZONTAL,0);
gtk_notebook_append_page (GTK_NOTEBOOK (zalozkovnik), hBox2, gtk_label_new ("list 2"));
GtkWidget* hBox3 = gtk_box_new (GTK_ORIENTATION_HORIZONTAL,0);
gtk_widget_set_hexpand(hBox3,true);
gtk_box_set_homogeneous(GTK_BOX(hBox3), true);
gtk_notebook_append_page (GTK_NOTEBOOK (zalozkovnik), hBox3, gtk_label_new ("list 3"));
// notebook notebook notebook notebook notebook notebook notebook notebook notebook notebook notebook notebook notebook notebook notebook notebook notebook
GtkWidget* skrollWindow = gtk_scrolled_window_new();
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (skrollWindow), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
gtk_box_append (GTK_BOX (hBox3), skrollWindow);
GtkWidget* hBox31 = gtk_box_new (GTK_ORIENTATION_HORIZONTAL,0);
gtk_scrolled_window_set_child(GTK_SCROLLED_WINDOW (skrollWindow), hBox31);
GtkWidget* vBoxLabels = gtk_box_new (GTK_ORIENTATION_VERTICAL,0);
gtk_box_append (GTK_BOX (hBox31), vBoxLabels);
gtk_box_set_homogeneous(GTK_BOX(hBox31), true);
GtkWidget* vBoxElements = gtk_box_new (GTK_ORIENTATION_VERTICAL,0);
gtk_box_set_homogeneous(GTK_BOX(vBoxElements), true);
gtk_box_append (GTK_BOX (hBox31), vBoxElements);
GtkWidget* labelDatum = gtk_label_new("* Datum závodů (DD.MM.RRRR): ");
gtk_box_append (GTK_BOX (vBoxLabels), labelDatum);
GtkWidget* entryDatum = gtk_entry_new();
gtk_box_append (GTK_BOX (vBoxElements), entryDatum);
string datumZavodu = "10.3.2023";
gtk_editable_set_text(GTK_EDITABLE(entryDatum),datumZavodu.c_str());
GtkWidget* labelSeznamZavodnikuCSV = gtk_label_new("Seznam závodníků *.csv: ");
gtk_box_append (GTK_BOX (vBoxLabels), labelSeznamZavodnikuCSV);
GtkWidget* vyberSeznamZavodnikuCSV = gtk_button_new_with_label("Vyber soubor s seznamem závodníků *.csv - bude treba poresit");
gtk_box_append (GTK_BOX (vBoxElements), vyberSeznamZavodnikuCSV);
GtkWidget* labelAdresarSeznamu = gtk_label_new("Adresář seznamu zavodniku (*.xml): ");
gtk_box_append (GTK_BOX (vBoxLabels), labelAdresarSeznamu);
GtkWidget* vyberAdresarSeznamu = gtk_button_new_with_label("Vyber adresář kde bude umisten seznam_zavodniku.xml - poresit tlacitko");
gtk_box_append (GTK_BOX (vBoxElements), vyberAdresarSeznamu);
}
int main(int argc, char **argv)
{
GtkApplication *app;
app = gtk_application_new ("testing.app", G_APPLICATION_FLAGS_NONE);
g_signal_connect (app, "activate", G_CALLBACK (appActivate), NULL);
return g_application_run (G_APPLICATION (app), NULL, NULL);
g_object_unref (app);
return 0;
}
I have prepared image of app and marrked there with red color what I need expand:
I now that problem will be solved if I remove scrolled widget - but I plan place there much more widgets - so scrolling widget is neccessary.