gpt4 book ai didi

c - 如何在 GTK 应用程序中创建多个 View

转载 作者:行者123 更新时间:2023-11-30 14:49:34 26 4
gpt4 key购买 nike

我想制作一个具有多个 View 的 GTK+ 应用程序,但我真的不知道如何以最佳方式实现它。在每个 View 中我都需要一些标签和按钮。首先,我尝试使用 GtkStack 来制作应用程序,但是 StackSwitcher 的自定义选项很差(它的按钮位于行中,并且 stackswitcher 图标太小,即使具有“icon-size”属性的最大可能大小)。

将堆栈的页面切换与普通按钮连接可以解决此问题,但我不知道如何做这样的事情。

我的第二种方法是使用多个窗口。我能够制作一些窗口并用按钮隐藏/显示它们。不幸的是,该应用程序将在相当糟糕的电脑上运行(更重要的是,电脑连接到触摸屏,这使其性能更差),经过一些测试后,我可以说该应用程序有一些滞后。整个事情使所有窗口一开始就隐藏或显示它们(取决于按下哪个窗口上的按钮)。

总结我的问题:

  1. 提出此类申请的最佳方式是什么?使用多个窗口还是使用 GtkStack?
  2. 如果使用 Windows 如何优化整个事情?
  3. 如果使用堆栈如何在普通按钮上实现 switchng 堆栈的选项卡?

最佳答案

我更喜欢GtkStack。它有很棒的 gtk_stack_set_visible_child_name,让您可以通过 ID 设置可见子项。在下面的代码片段中,我使用 GtkListBox 进行切换(并且我必须存储带有子名称的 GPtrArray)

static void
row_activated (GtkListBox *box,
GtkListBoxRow *row,
gpointer udata)
{
MyWid *self = udata;
MyWidPrivate *priv = self->priv;

gint row_index = gtk_list_box_row_get_index (row);
gchar *path = g_ptr_array_index (priv->paths, row_index);

gtk_stack_set_visible_child_name (priv->stack, path);
}

如果你想使用GtkButton,事情就更简单了:

gchar *id; // just a string, that allows you to connect buttons and tabs
GtkWidget *child, *button;
child = create_tab_for_id (id); // not a real function! You should define it yourself
gtk_stack_add_named (stack, child, id);
button = create_button_for_id (id); // also not a real function
/* Time for magic */
g_signal_connect_swapped (button, "clicked",
G_CALLBACK (gtk_stack_set_visible_child_name),
stack);

关于c - 如何在 GTK 应用程序中创建多个 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49507982/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com