How to adapt TopLevel widget size to the subWidget
- From: Pencc <yxpengi386 163 com>
- To: gtk-app-devel-list gnome org
- Subject: How to adapt TopLevel widget size to the subWidget
- Date: Thu, 31 May 2018 08:54:17 +0800
Hello, everyone!
window is the toplevel widget while label is the subWidget, when
I change the size of label by gtk_widget_set_size_request,
if new label is larger than the old label, toplevel will be larger, but
why that not works the other way around ?
[1]
#include <gtk/gtk.h>
GtkWidget *window;
GtkWidget *label;
void close_app(GtkWidget *window,gpointer data)
{
gtk_main_quit();
}
void button_event(GtkWidget *widget,gpointer *data) /*回调函数*/
{
if(NULL != data) {
gtk_widget_set_size_request(label, 200, 200);
} else {
gtk_widget_set_size_request(label, 50, 50);
gtk_widget_set_size_request(window, -1, -1);
}
}
int main(int argc,char *argv[])
{
GtkWidget *button1;
GtkWidget *button2;
GtkWidget *button3;
GtkWidget *Hbox;
GtkWidget *Vbox;
gtk_init(&argc,&argv);
//new window
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_title(GTK_WINDOW(window),"Layout demo");
gtk_window_set_position(GTK_WINDOW(window),GTK_WIN_POS_CENTER);
gtk_window_set_default_size(GTK_WINDOW(window),200,200);
g_signal_connect(GTK_OBJECT(window),"destroy",GTK_SIGNAL_FUNC(close_app),NULL);
//新建了3个按钮和两个组装盒
button1 = gtk_button_new_with_label("button1");
button2 = gtk_button_new_with_label("button2");
button3 = gtk_button_new_with_label("button3");
label = gtk_label_new("status line");
Hbox = gtk_hbox_new(TRUE,0);
Vbox = gtk_vbox_new(TRUE,0);
//将button1和button2放在Hbox上
gtk_box_pack_start(GTK_BOX(Hbox),button1,FALSE,FALSE,0);
gtk_box_pack_start(GTK_BOX(Hbox),button2,FALSE,FALSE,0);
//将button3和Hbox放在Vbox上
gtk_box_pack_start(GTK_BOX(Vbox),GTK_WIDGET(Hbox),FALSE,FALSE,0);
gtk_box_pack_start(GTK_BOX(Vbox),label,FALSE,FALSE,0);
gtk_box_pack_start(GTK_BOX(Vbox),button3,FALSE,FALSE,0);
gtk_signal_connect(GTK_OBJECT(button1), "pressed",
GTK_SIGNAL_FUNC(button_event), "1");
gtk_signal_connect(GTK_OBJECT(button2), "pressed",
GTK_SIGNAL_FUNC(button_event), NULL);
//将Vbox添加到window容器上
gtk_container_add(GTK_CONTAINER(window),Vbox);
gtk_widget_show_all(window);
gtk_main();
return 0;
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]