Archiv verlassen und diese Seite im Standarddesign anzeigen : [GTK C] Adressleiste????
Ich versuche gerade eine Adressleiste in ein Fenster einzubauen und den inhalt des gewählten verzeichnises soll im Fenster dann angezeigt werden - also wie bei einem Filemanager. Ich hab bis noch nur das Fenster dazu und komm schon nicht weiter.
#include <gtk/gtk.h>
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
GtkWidget *fenster;
GtkWidget *gewaehlt;
gtk_init(&argc, &argv);
/* Das Hauptfenster erzeugen. */
fenster = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_widget_set_usize(GTK_WIDGET(fenster), 400, 100);
gtk_window_set_title(GTK_WINDOW(fenster), __FILE__);
/* Alles sichtbar machen. */
gtk_widget_show_all(fenster);
gtk_main();
return 0;
}
könnt ihr mir da helfen oder wisst ihr einen Link, wo ich so etwas nachschauen kann?
mfg nul
Trillian
01-07-2003, 17:29
GtkTreeView etc
In libegg, libgnomeui o.ä. gibts sicherlich was fertiges.
Bei der Adressleiste mach ich ganz gute Fortschritte:
#include <gtk/gtk.h>
int main(int argc, char **argv)
{
GtkWidget *fenster;
GtkWidget *box;
GtkWidget *entry;
/*Gtk initialisieren*/
gtk_init(&argc, &argv);
/*Ein neues Fenster erstellen*/
fenster = gtk_window_new(GTK_WINDOW_TOPLEVEL);
/* Feld für die Texteingabe */
entry = gtk_entry_new_with_max_length(50);
gtk_entry_set_text(GTK_ENTRY(entry),"file:/");
/*Neue Box erstellen*/
box = gtk_vbox_new(FALSE,0);
/*Fensterposition*/
gtk_window_set_position(GTK_WINDOW(fenster),GTK_WI N_POS_CENTER);
gtk_container_set_border_width(GTK_CONTAINER(fenst er),0);
gtk_box_pack_start(GTK_BOX(box), entry, FALSE, FALSE, 0);
gtk_container_add(GTK_CONTAINER(fenster),box);
/*Zeigs uns.....*/
gtk_widget_show_all(fenster);
gtk_main();
return 0;
}
Aber beim Versuch das über eine Funktion einzufügen geht's nicht weiter.
In main steht:
/* Adressleite erzeugen */
adressleiste = adressleiste_erzeugen(fenster);
gtk_box_pack_start(GTK_BOX(box), entry, FALSE, FALSE, 0);
gtk_widget_show(adressleiste);
und die Funktion adressleits_erzeugen schaut so aus:
/* Die Adressleiste */
GtkWidget *adressleiste_erzeugen(GtkWidget *fenster)
{
GtkWidget *adressleiste;
/* Feld für die Texteingabe */
entry = gtk_entry_new_with_max_length(50);
gtk_entry_set_text(GTK_ENTRY(entry),"file:/home/chrgos/");
/*Neue Box erstellen*/
box = gtk_vbox_new(FALSE,0);
/*Fensterposition*/
gtk_window_set_position(GTK_WINDOW(fenster),GTK_WI N_POS_CENTER);
gtk_container_set_border_width(GTK_CONTAINER(fenst er),0);
gtk_container_add(GTK_CONTAINER(fenster),box);
adressleiste = ???;
return adressleiste;
}
Was muss ich aber zuletzt noch adressleiste zuweisen? Da komm ich nicht weiter. Wenn ich die Zeile weglasse kann ich es zwar kompilieren und starten, die Leiste wird aber nicht angezeigt und auf der Konsole erscheinen Fehlermeldungen.
Trillian
01-07-2003, 19:10
adressleiste = box;
Wenn ich
= box; schreibe
ist es fast das selbe. Ich kann es kompilieren und ausführen,
aber
1. die Leiste wird nicht angezeigt und
2. es erscheint folgende Fehlermeldung:
Gtk-CRITICAL **: file gtkbin.c : line217 (gtk_bin_add): assertion `bin->child == NULL` failed.
Wenn ich
gtk_container_add(GTK_CONTAINER(fenster),box);
herausnehme ist der Fehler beim Starten verschwunden, aber die Eingabeleiste wird nicht angezeigt.
ich hatte eben den selben fehler
gtk_widget_show(fenster); gegen gtk_widget_show_all(fenster); getauscht und schon liefs
(bis auf die kleinigkeit dass ich mit gtk_container_add(GTK_CONTAINER(fenster),button_X) ;
3 buttons in das selbe fenster und an die selbe stelle kleben wollte ... 2 davon wieder auskommentiert und alles ist ok)
ich versuch mich grade an dem gtk+-tut von pronix.de und dem anderen aus der linkliste dort
was benutzt ihr den so fuer die ersten gtkschritte?
coup
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.