【发布时间】:2021-04-09 22:47:06
【问题描述】:
我正在使用 GTK-3.0 为 Linux 构建一个小型播客应用程序我想使用一个列表框来保存搜索结果但是当我将一个小部件添加到列表框时它太小了enter image description here
我已经把所有的 ui 东西都放到了一个头文件中。
#include<gtk/gtk.h>
#include <iostream>
extern "C"{
void createSearchResults(GtkWidget *e);
void MakeWindow(int *x,char ***y)
{
GtkWidget *listBox;
GtkWidget *window;
GtkBuilder *builder;
gtk_init(x,y);
builder = gtk_builder_new();
gtk_builder_add_from_file (builder, "PodcastWindow.glade", NULL);
listBox = GTK_WIDGET(gtk_builder_get_object(builder,"SearchListBox"));
window = GTK_WIDGET(gtk_builder_get_object(builder,"MainWindow"));
gtk_builder_connect_signals(builder,NULL);
g_object_unref(builder);
gtk_widget_show(window);
createSearchResults(listBox);
gtk_main();
return;
}
void on_MainWindow_destroy(){gtk_main_quit();}
void PodcastSearchEntry(GtkEntry *e){
itunesSearch(gtk_entry_get_text(e));
}
void createSearchResults(GtkWidget *e){
GtkWidget *tmp = gtk_label_new("helloWorld");
gtk_container_add(GTK_CONTAINER(e),tmp);
}
}
我认为问题出在这个函数的某个地方
void createSearchResults(GtkWidget *e){
GtkWidget *tmp = gtk_label_new("helloWorld");
gtk_container_add(GTK_CONTAINER(e),tmp);
}
我们将不胜感激任何可以提供的帮助。 PS,如果我可以对格式进行任何改进,请告诉我。
【问题讨论】:
-
您需要查看 Gtk+3 文档gtk_box_set_child_packing()。 (特别是
expand参数) Gtk Builder 接口并不能替代实际编写好的接口。它在布局等方面有很大的缺点。Builder == Initial Guess。您可能还想查看已弃用但仍然有用的hbox和vbox布局容器。 -
以上评论中的所有评论都没有任何意义:
GtkListBox不是GtkBox。对于创建 UI,您可以使用GtkBuilder就好了,这也是大多数 GTK 应用程序所做的(请注意,GtkBuilder 和 Glade 之间存在差异)。您仍然可以使用水平和垂直框:GtkHBox和GtkVBox已被弃用,因为它们可以只替换为GtkBox和适当的“方向”属性集
标签: c++ linux gtk3 linux-mint