如何为聊天应用程序安排我的Gtk小部件

如何为聊天应用程序安排我的Gtk小部件,gtk,gtk3,glade,Gtk,Gtk3,Glade,伙计们。通过设计聊天应用程序,我正在学习C、Gtk+和cssforgtk。这是我迄今为止设计的GUI: 我现在试图实现的是将聊天信息分开,这样发件人的信息显示在左侧,而帐户所有者的信息显示在右侧,就像我们在WhatApp、Pidgin等中“通常”看到的那样。 我尝试使用一个有两列的GtkGrid来划分消息,但问题是它不能提供我想要的100%,因为: 当左边的消息非常大时,它会收缩右边的消息(如果右边的消息较小,我觉得可以),反之亦然 实际问题是:当两条消息都非常大时,窗口 宽度增加或出现滚动条

伙计们。通过设计聊天应用程序,我正在学习
C
Gtk+
cssforgtk
。这是我迄今为止设计的GUI:

我现在试图实现的是将聊天信息分开,这样发件人的信息显示在左侧,而帐户所有者的信息显示在右侧,就像我们在WhatApp、Pidgin等中“通常”看到的那样。 我尝试使用一个有两列的
GtkGrid
来划分消息,但问题是它不能提供我想要的100%,因为:

  • 当左边的消息非常大时,它会收缩右边的消息(如果右边的消息较小,我觉得可以),反之亦然
  • 实际问题是:当两条消息都非常大时,窗口 宽度增加或出现滚动条
  • 我在
    Glade
    应用程序上尝试了
    GtkGrid
    方法,结果是:

    为了以更清晰的方式演示我的问题,我使用
    GIMP
    编辑了一个小部件图片,以便您看到我在应用程序中真正需要的东西。我希望消息重叠,这样如果发送者的消息非常大,它就会重叠到接收者的消息区域(反之亦然),但它应该符合一定的重叠距离,如下面我的
    GIMP
    编辑:


    我还使用了消息小部件的按钮,所以如果我做错了,请帮助。谢谢。

    没错,按钮不是显示此类内容的合适工具。您可能可以使用标签、文字包装和CSS来解决这个问题,但是您最好使用诸如混乱或WebKit(2)GTK+之类的东西。我不知道同理心在比较中使用了什么。或者更确切地说是一个GtkTextView,它可以精确地对齐布局(以及Pidgin使用了什么)。抱歉,伙计们,我不在。谢谢你的回复@andlabs我用一个标签实现了消息气泡,正如你所说,但当我试图搜索所有消息标签时,遇到了僵局。将尝试const
    gchar*text=gtk_按钮获取标签(…)
    但是聊天时间可能很长。@TingPing您是否建议我使用单个文本视图,然后将文本向左或向右对齐。例如:
    gtk_文本_视图_设置_对齐(gtk_文本_视图(应用程序状态->文本_视图),gtk_对齐右)这将是一件好事,因为我可以在需要时搜索整个文本视图,但现在我如何在文本周围创建聊天泡泡。你可以对段落应用GtkTextTag,他们可以有自己的理由。至于气泡,我不知道一个很好的方法。对,按钮不是显示这样内容的合适工具。您可能可以使用标签、文字包装和CSS来解决这个问题,但是您最好使用诸如混乱或WebKit(2)GTK+之类的东西。我不知道同理心在比较中使用了什么。或者更确切地说是一个GtkTextView,它可以精确地对齐布局(以及Pidgin使用了什么)。抱歉,伙计们,我不在。谢谢你的回复@andlabs我用一个标签实现了消息气泡,正如你所说,但当我试图搜索所有消息标签时,遇到了僵局。将尝试const
    gchar*text=gtk_按钮获取标签(…)
    但是聊天时间可能很长。@TingPing您是否建议我使用单个文本视图,然后将文本向左或向右对齐。例如:
    gtk_文本_视图_设置_对齐(gtk_文本_视图(应用程序状态->文本_视图),gtk_对齐右)这将是一件好事,因为我可以在需要时搜索整个文本视图,但现在我如何在文本周围创建聊天泡泡。你可以对段落应用GtkTextTag,他们可以有自己的理由。至于泡沫,我不知道一个很好的方法。