- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我试图将 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 请提供您所观察到的最低工作示例。幸运的是,从你提出的内容来看,我不需要做太多工作就可以将它粘贴到现有的代码库中并进行构建,但问题可能出在你发布的代码之外(即使只能间接)。我已经尝试了您的代码,并且内部小部件显示了它的任务(不同的 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/
我正在尝试开发 GTK 桌面应用程序。 我想显示图像并在图像上创建一些可点击的区域。因此,我使用 GtkFixed 容器来放置图像和可点击区域(GtkEventBox 用于区域)。用户单击 GtkEv
我正在尝试将我的 GUI 库从 gtk2 移动到 gtk3,但遇到了一些问题。其中之一是我无法将某些小部件(如 GtkComboBoxText、GtkEntry、GtkSpinButton)的大小设置
我试图将 GtkFixed 中的 GtkFrame 向左移动。原代码如下 frm_2 = gtk_frame_new (NULL); gtk_widget_show (frm_2); gtk_fixe
我是一名优秀的程序员,十分优秀!