【问题标题】:Line breaks in Statusbar状态栏中的换行符
【发布时间】:2014-06-04 23:01:53
【问题描述】:

我这里有一个使用 GTK 状态栏的程序,我想在其中进行多行输出。当我尝试向其中输出多行时,我得到的是字形,如下所示:

我希望它能像在 emacs 中一样工作:

经过一番搜索,我发现layoutSetSingleParagraphMode 似乎完全符合我的要求。大多数小部件的默认设置是 False,我们自己没有在任何地方设置它,这让我认为状态栏默认为单段落模式。

我的问题是我不知道如何从Statusbar 转到PangoLayout,在此我可以使用此功能。

我最接近的是找到widgetGetPangoContext,然后让我得到PangoLayoutlayoutEmpty,但顾名思义,这似乎只是创建了一个单独的PangoLayout,它在操作时不会影响状态栏: 推送或弹出文本的行为与之前一样。

有没有我缺少的功能?诚然,gtk2hs 在类型类的海洋中游泳以模拟 OO,这无助于生成的文档的可读性。看来这应该是一个简单的任务。

如果我们不打算从现有小部件中取出 PangoLayout,那么我该如何实现我想要的呢?在状态栏创建时似乎没有选择段落模式的选项。

请参阅this,了解与此相关的项目的 GitHub 问题。

【问题讨论】:

    标签: haskell pango gtk2hs


    【解决方案1】:

    请试试这个:

    使用statusbarGetMessageArea 获取状态栏文本标签所在的Gtk.Box

    然后获取带有containerGetChildren <status bar message area> 的文本标签。这个函数返回一个Gtk.Widget 列表,其中只有一个元素,即标签。

    将小部件转换为带有castToLabel 的标签。

    现在您可以使用labelSetSingleLineMode <label> False 设置多行模式。

    使用labelSetTextlabelSetMarkup 设置标签的内容。

    我已经成功地尝试过了(来自 Hackage 的 gtk 0.12.5,使用 GTK2,还没有在 GTK3 上尝试过)。

    【讨论】:

    • 你是一个美丽的人。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-19
    相关资源
    最近更新 更多