gpt4 book ai didi

c - GtkFixed : inner widget ignores the coordinates 的用法

转载 作者:太空宇宙 更新时间:2023-11-03 23:37:30 26 4
gpt4 key购买 nike

我试图将 GtkFixed 中的 GtkFrame 向左移动。原代码如下

frm_2 = gtk_frame_new (NULL);
gtk_widget_show (frm_2);
gtk_fixed_put (GTK_FIXED (fixed1), frm_2, 160, 16);
gtk_widget_set_size_request (frm_2, 1105, 264);
gtk_frame_set_shadow_type (GTK_FRAME (frm_2), GTK_SHADOW_ETCHED_OUT);

fixed3 = gtk_fixed_new ();
gtk_widget_show (fixed3);
gtk_container_add (GTK_CONTAINER (frm_2), fixed3 );

frm_1_frm_2 = gtk_frame_new (NULL);
gtk_widget_show (frm_1_frm_2);
gtk_fixed_put (GTK_FIXED (fixed3), frm_1_frm_2, 6, 8); // <-- THIS
gtk_widget_set_size_request (frm_1_frm_2, 250, 224);
gtk_frame_set_shadow_type (GTK_FRAME (frm_1_frm_2), GTK_SHADOW_ETCHED_OUT);

我试过

gtk_fixed_put (GTK_FIXED (fixed3), frm_1_frm_2, 0, 8);

gtk_fixed_put (GTK_FIXED (fixed3), frm_1_frm_2, 50, 8);

在所有情况下,结果都是一样的:GtkFrame 位置看起来没有变化,它的行为方式与第一个代码片段相同。

小部件的完整层次结构是:

GtkWindow( GTK_WINDOW_TOPLEVEL )
|
+-GtkFixed fixed1
| |
| +-GtkFrame
|
+-GtkFrame frm_2
|
+-GtkFixed fixed3
|
+-GtkFrame frm_1_frm_2
|
+-GtkFrame another frame
...

Gtk 版本是:

ls libgtk*
libgtk-x11-2.0.so.0.2400.23

  1. 我做错了什么?

  2. 如何解决?

抱歉我的英语不好。

最佳答案

#1 请提供您所观察到的最低工作示例。幸运的是,从你提出的内容来看,我不需要做太多工作就可以将它粘贴到现有的代码库中并进行构建,但问题可能出在你发布的代码之外(即使只能间接)。我已经尝试了您的代码,并且内部小部件显示了它的任务(不同的 x 值的不同位置)。

#2 永远不要使用 GtkFixed。我知道有很多教条式编码指南(我个人喜欢 goto),但这个有其优点。 Gtk 位于显示管理器之上,而显示管理器又位于后端之上,如 x11 quartz 或 wayland。 Gtk 没有说明小部件应该去哪里。那不是它的工作。它只能提供建议。

您很可能遇到这样的情况,Gtk 走进办公室,说“我想要这个那个,下类前把它放在我的 table 上”。

Gdk 说“确定老板”。

当他离开房间时,x11 说“他不知道这会破坏无障碍访问吗?”或“甚至不在屏幕范围内的关闭按钮有什么用?”甚至“电脑说不”。

“只要把它放在你认为最好的地方,我就会找到一种方法来混淆报告。”

“obfa-什么?”

“完全正确”

总而言之,您的显示管理器会做出很多您无法(主要是因为您不应该)控制的决定。这可能就是您的小部件不在您想要的位置的原因。尽量避免依赖 GtkFixed,而是使用其他容器,并根据需要添加填充和间距以获得类似的效果。只是不要使用 GtkFixed。这是邪恶的。 UI 开发人员将在未来几年向您发送仇恨邮件。不要使用 GtkFixed。真的不要这样做。生活是一件美丽的事情,因为它的所有美好而值得欣赏和珍惜。不要使用 GtkFixed。你会花几个月的时间夹着尾部,就像我的狗得到修复一样。不要使用 GtkFixed。

关于c - GtkFixed : inner widget ignores the coordinates 的用法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55352945/

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