GTK3自定义组合框中网格首个按钮尺寸偏大问题求助
GTK3自定义组合框首个按钮高度异常问题
我用C语言开发GTK3自定义组合框,创建窗口后添加了网格,网格内是generic_button类型的按钮。所有按钮高度都设置为20像素,但网格中第一个按钮的高度始终约为25像素,不符合设置值,附上显示截图,求技术帮助。
相关结构体定义:
struct generic_button { int x; int y; int j_width; int j_height; const char *pc_name[6]; GtkWidget *po_label; /* The following are set by init_button() */ GdkPixbuf *po_pixbuf[6]; GtkWidget *po_layout; GtkWidget *po_image; int j_state; int j_assignment; };
初始化窗口和部件的函数:
void init_meas_assign_combobox() { // Create the window meas_assign_combo.po_window = gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_window_set_decorated(GTK_WINDOW(meas_assign_combo.po_window), FALSE); gtk_window_set_type_hint(GTK_WINDOW(meas_assign_combo.po_window), GDK_WINDOW_TYPE_HINT_DIALOG); gtk_window_set_position(GTK_WINDOW(meas_assign_combo.po_window), GTK_WIN_POS_MOUSE); gtk_window_set_keep_above(GTK_WINDOW(meas_assign_combo.po_window), TRUE); gtk_widget_set_size_request(meas_assign_combo.po_window, COMBO_WIDTH, COMBO_HEIGHT); // Create the main layout meas_assign_combo.po_main_layout = gtk_layout_new(NULL, NULL); gtk_layout_set_size(GTK_LAYOUT(meas_assign_combo.po_main_layout), COMBO_WIDTH, COMBO_HEIGHT); gtk_widget_set_size_request(meas_assign_combo.po_main_layout, COMBO_WIDTH, COMBO_HEIGHT); gtk_container_add(GTK_CONTAINER(meas_assign_combo.po_window), meas_assign_combo.po_main_layout); // Create the grid meas_assign_combo.po_grid = gtk_grid_new(); // gtk_grid_insert_row(GTK_GRID(meas_assign_combo.po_grid), NELEM(ac_meas_assignments)); gtk_widget_set_size_request(GTK_WIDGET(meas_assign_combo.po_grid), COMBO_WIDTH, COMBO_HEIGHT); gtk_grid_set_row_spacing(GTK_GRID(meas_assign_combo.po_grid), 5); gtk_layout_put(GTK_LAYOUT(meas_assign_combo.po_main_layout), meas_assign_combo.po_grid, 0, 0); // initialize measurement option titles // initially I used i = 0, and this behaves the same way. I was // trying to see if there was a problem with inserting a 0 row. // But the problem persists. for (int i = 1; i < NELEM(ac_meas_assignments)+1; i++) { gtk_grid_insert_row(GTK_GRID(meas_assign_combo.po_grid), i); init_button(&as_meas_assignments[i-1], "/recipe_panel"); // ((i*2)+1) gtk_grid_attach(GTK_GRID(meas_assign_combo.po_grid), as_meas_assignments[i-1].po_layout, 1, i, 1, 1); as_meas_assignments[i-1].po_label=gtk_label_new(ac_meas_assignments[i-1]); gtk_layout_put(GTK_LAYOUT(as_meas_assignments[i-1].po_layout), as_meas_assignments[i-1].po_label, 0, 5); } g_signal_connect(G_OBJECT(meas_assign_combo.po_window), "leave-notify-event", G_CALLBACK(handle_leave_notify_event), NULL); // Create the list of measurements gtk_widget_show_all(meas_assign_combo.po_window); }
按钮数组定义:
// measurement assignment buttons (for combo box selections) static struct generic_button as_meas_assignments[]={ {0, 0, 120, 20, {"measurement-name-bg"}}, {0, 0, 120, 20, {"measurement-name-bg"}}, {0, 0, 120, 20, {"measurement-name-bg"}}, {0, 0, 120, 20, {"measurement-name-bg"}}, {0, 0, 120, 20, {"measurement-name-bg"}}, {0, 0, 120, 20, {"measurement-name-bg"}}, {0, 0, 120, 20, {"measurement-name-bg"}}, {0, 0, 120, 20, {"measurement-name-bg"}}, {0, 0, 120, 20, {"measurement-name-bg"}}, {0, 0, 120, 20, {"measurement-name-bg"}}, {0, 0, 120, 20, {"measurement-name-bg"}}, {0, 0, 120, 20, {"measurement-name-bg"}}, {0, 0, 120, 20, {"measurement-name-bg"}}, {0, 0, 120, 20, {"measurement-name-bg"}}, };
内容的提问来源于stack exchange,提问作者anon1234
相关产品推荐
相关产品推荐

