【问题标题】:Why is the widget in this Listbox too small? GTK为什么这个列表框中的小部件太小了? GTK
【发布时间】: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。您可能还想查看已弃用但仍然有用的 hboxvbox 布局容器。
  • 以上评论中的所有评论都没有任何意义:GtkListBox 不是GtkBox。对于创建 UI,您可以使用 GtkBuilder 就好了,这也是大多数 GTK 应用程序所做的(请注意,GtkBuilder 和 Glade 之间存在差异)。您仍然可以使用水平和垂直框:GtkHBoxGtkVBox 已被弃用,因为它们可以只替换为 GtkBox 和适当的“方向”属性集

标签: c++ linux gtk3 linux-mint


【解决方案1】:

如果没有重现问题的小示例代码,很难知道您的代码到底出了什么问题。

话虽如此,您应该记住的一件事是,在 GTK3 中,小部件在默认情况下是可见的(但在 GTK4 中已更改)。所以你可能想要在你的 createSearchResults() 函数中做的是添加 gtk_widget_show() 到你刚刚创建的标签:

void createSearchResults(GtkWidget *e){
    GtkWidget *tmp = gtk_label_new("helloWorld");
    gtk_widget_show (tmp);
    gtk_container_add(GTK_CONTAINER(e),tmp);
}

分析小部件树中存在问题的一种方法是查看GTK inspector。然后,您可以单击以检查未按预期运行的小部件。

【讨论】:

  • 感谢显示修复它的小部件。我也非常感谢有关 GTK 检查器的信息,一定会使用它。
猜你喜欢
  • 1970-01-01
  • 2012-06-10
  • 1970-01-01
  • 2012-02-13
  • 1970-01-01
  • 2012-02-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多