更改GTK标签在窗口中的位置-C

P1卡楚

我目前正在用C为Linux编程,并且需要一个GUI,所以我选择了GTK库来这样做。我现在有一个带有标签的窗口(开始时),但我不知道如何将其移动(在(x,y)坐标中,而不在zPosition中)以将其放在窗口顶部。

这是我在main()中的GTK代码

//Label
pLabel=gtk_label_new(NULL);
sUtf8 = g_locale_to_utf8("<span font_desc=\"Times New Roman italic 12\" foreground=\"#0000FF\">Neural Network - XOR Example</span>\n"
                         ,-1, NULL, NULL, NULL);
gtk_label_set_markup(GTK_LABEL(pLabel), sUtf8);
g_free(sUtf8);
gtk_label_set_justify(GTK_LABEL(pLabel), GTK_JUSTIFY_CENTER);


//Window
gtk_window_set_position(GTK_WINDOW(pWindow), GTK_WIN_POS_CENTER);
gtk_window_set_title(GTK_WINDOW(pWindow), "Neural Network");
gtk_window_set_default_size(GTK_WINDOW(pWindow), 900, 600);
gtk_container_add(GTK_CONTAINER(pWindow), pLabel);

g_signal_connect(G_OBJECT(pWindow), "destroy", G_CALLBACK(OnDestroy), NULL);

gtk_widget_show_all(pWindow);
gtk_main();

有人知道如何移动它吗?

谢谢!

这是我得到的:

图像
(来源:hostingpics.net

Andlabs

卡尔给了你部分答案。

关于为什么看到自己拥有的东西,有两个部分:

首先,GtkLabel具有一个古老的对齐机制,它从不推荐使用的GtkMisc类继承。有关详细信息,请参见GtkMisc的文档:xalignyalign属性控制文本在标签分配中的位置,默认情况下将其设置为居中。但是请记住,它们已被弃用,因此通常有更好的选择。

其次,GtkWindow中只能有一个控件。该控件被分配了窗口的整个空间。

将这两个事实放在一起,您应该明白为什么拥有自己的东西。

那么正确的是什么呢?

您必须使用一个容器,例如GtkBox或GtkGrid,才能将多个控件放入GtkWindow。每个插件与它承载有四个特殊的性质:hexpandhalignvexpand,和valign其控制所述容器的每个部件的位置和大小。这些是小部件本身的属性

hexpandvexpand确定容器是否分别在X和Y方向上分配了剩余的空间给该控件。如果设置了多个窗口小部件,则空间被平均分配。

halignvalign确定小部件在其分配中的位置。GTK_ALIGN_START,,GTK_ALIGN_CENTER然后GTK_ALIGN_END将小部件分别放在给定对齐侧的开始,中间和结尾。GTK_ALIGN_FILL填充小部件以适合分配。

此页面上有更多信息。

如果要精确定位控件,则应首先调查GtkGrid和GtkBox(递归应用)是否提供所需的内容。关于GtkLabels的默认内部居中的重要一点是,GtkGrid中的GtkLabel将已经与其邻居的文本垂直对齐。只需设置halign为开始或结束即可使标签左对齐或右对齐(并设置valign在标签的邻居像表一样大时开始)。还有一些功能可提供边距和填充以使UI看起来不错。

但是,如果您绝对必须自己放置东西,请牢记所有内容。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

XAML C#网格中元素在窗口中的动态位置

来自分类Dev

XAML C#网格中元素在窗口中的动态位置

来自分类Dev

通过单击按钮 GTK C 更改标签

来自分类Dev

使用C ++ Win32 GUI在窗口中显示文本

来自分类Dev

如何将 GtkWidget 标签在 C 中的 GtkWidget 布局的中心与 GTK3 对齐?

来自分类Dev

标签在窗口上不可见

来自分类Dev

是否可以在窗口中更改Firefox的最大化按钮位置?

来自分类Dev

在 WPF ListView c# 窗口中更改外观行

来自分类Dev

更改标签在Kivy中的位置

来自分类Dev

如何在窗口中显示文件夹中所有文件的名称?Qt C++

来自分类Dev

在tkinter中,当标签文本出现在窗口中时,按钮从其先前位置向下移动

来自分类Dev

替换的字符串在窗口中显示标签

来自分类Dev

替换的字符串在窗口中显示标签

来自分类Dev

C ++中的GTK:根据控制台输入更改标签

来自分类Dev

如何使用XNA在窗口中获得固定位置?

来自分类Dev

我如何在窗口中获得固定位置?

来自分类Dev

在 tkinter 的窗口中更改表格的位置

来自分类Dev

在窗口中陷阱光标

来自分类Dev

c#在运行时更改标签(控件)的位置

来自分类Dev

更改标签在甜甜圈图中的位置

来自分类Dev

PictureBox在窗体设计窗口中的位置在运行时与它们的位置不对应

来自分类Dev

C#在窗口的顶部中央找到窗口

来自分类Dev

查找`body`标签在弹出窗口中是否具有类

来自分类Dev

在窗口中创建多个弹出窗口

来自分类Dev

在窗口中创建多个弹出窗口

来自分类Dev

在子窗口中绘图-C#

来自分类Dev

C 主卷窗口中的 __uuidof

来自分类Dev

如何将表格放在窗口中心(设置表格位置)

来自分类Dev

计算一个点在窗口中的下一个位置

Related 相关文章

热门标签

归档