【问题标题】:Getting nice-looking widget sizing in MonoDevelop (Gtk#)在 MonoDevelop (Gtk#) 中获得漂亮的小部件大小
【发布时间】:2010-08-30 21:23:46
【问题描述】:

编辑:Click here for the code

所以我正在尝试使用 MonoDevelop(2.4 版)构建界面。我正在尝试习惯“容器中的容器”的 Gtk 概念。我创建了一个带有两个......呃......盒子的vbox,在顶部盒子上放了一个菜单,在底部盒子上放了一张桌子。我将表格设置为两列五行。在前四行,我在左边放了一个标签,在右边放了一个条目。在右下角的单元格上,我放了一个按钮。它看起来像这样:

这是我正在努力解决的问题:

1) 如何让表格的列不等宽?有趣的是,当我只添加标签并且还没有添加输入框时,左列只占用了标签所需的空间。现在是 50/50,它不会让步。

2) 如何使标签右对齐,以便文本中的最后一个“:”很好地对齐并靠近输入框?我将标签的“对齐”属性设置为“右”,似乎被忽略了。

3) “文件”菜单下的“打开”和“关闭”操作的操作代码包括显示带有确定按钮的模式消息框。但是按下 OK 按钮不会关闭消息框,只会关闭消息框窗口。代码是:

(new Gtk.MessageDialog(this, DialogFlags.Modal, MessageType.Info, ButtonsType.Ok,
                  "Open Action")).Show();

【问题讨论】:

    标签: c# mono monodevelop gtk# gui-designer


    【解决方案1】:

    1) 将 Entry 小部件中的至少一个设置为水平“展开”和“填充”。

    2) 将标签的 Xalign 属性设置为 1.0。 justify 控制环绕文本的布局,Xalign/Yalign 控制整个块在标签区域内的位置。

    3) 你应该在完成后 Destroy() 对话框。或者,您可以 Hide() 它并重新使用它。您还应该考虑使用对话框的 Run() 方法 - 通常类似于:

    var dialog = new FooDialog(...);
    try {
        dialog.Show();
        var response = (ResponseType) dialog.Run ();
        if (response == ResponseType.Ok) {
            //do stuff
        }
    } finally {
        dialog.Destroy ();
    }
    

    【讨论】:

    • 提示 #3 有效。 :) 提示 #1 和 #2 的效果为零。如果你想仔细看看,这里是代码:users.vialink.com.br/jcastro/GUIBlah.tgz
    • 回复。 #2,您的标签需要“填充”而不是“扩展”。请参阅以下截屏视频:is.gd/ePzhZ - 您希望标签填充所有分配的空间,条目填充所有分配的空间并扩展到任何可用空间。
    • 成功了!我也解决了 #1 ......该表设置了“同质”属性!现在这是我想要的方式。谢谢!
    • 如果您在 Ubuntu 中开发,请查看名为 DevHelp 的软件包:packages.ubuntu.com/search?keywords=devhelp 有很棒的 gtk 教程通过图像和随附的代码触及这些概念。
    • DevHelp 是 GNOME 的一部分。它应该在几乎任何 Linux 发行版上。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-04
    相关资源
    最近更新 更多