linux 列GTK中的Textview和一些按钮

jm81lzqq  于 2023-06-29  发布在  Linux
关注(0)|答案(1)|浏览(88)

我试图创建一个文本视图和在第二列4垂直对齐按钮布局。我尝试阅读文档,但窗口无法呈现或按钮保持水平对齐。

<?xml version="1.0" encoding="UTF-8"?>
<interface>
  <object id="window" class="GtkWindow">
    <property name="title">Test</property>
    <property name="resizable">False</property>
    <child>
      <object class="GtkGrid">
        <child>
          <object class="GtkTextView" id="viewww">
            <property name="overwrite">True</property>
            <property name="visible">True</property>
            <property name="monospace">True</property>
            <property name="input_purpose">GTK_INPUT_PURPOSE_DIGITS</property>
            <property name="width-request">400</property>
            <property name="height-request">200</property>
            <property name="left_margin">10</property>
            <property name="right_margin">10</property>
            <property name="top_margin">10</property>
            <property name="bottom_margin">10</property>
          </object>
        </child>

        <child>
          <object class="GtkButton">
            <property name="label">READ</property>
            <packing>
              <property name="left_attach">0</property>
              <property name="top_attach">1</property>
            </packing>
          </object>
        </child>

        <child>
          <object class="GtkButton">
            <property name="label">WRITE</property>
            <packing>
              <property name="left_attach">0</property>
              <property name="top_attach">2</property>
            </packing>
          </object>
        </child>
      </object>
    </child>
  </object>
</interface>

这是一个打包的例子,但是窗口没有呈现任何东西。这是GTK的问题吗?
我试过打包,嵌套网格,但都不起作用。

lf5gs5x2

lf5gs5x21#

您的示例似乎使用了packing,它只存在于GTK3中(顺便说一句,您的示例中packing标记的位置是错误的。它应该在child范围内,而不是object)。在GTK4中,您可以使用layout标记来获得类似的结果。
GTK4的.ui文件示例(在应用一些修复后使用gtk4-builder-tool simplify --3to4 window.ui生成):

<?xml version="1.0" encoding="UTF-8"?>
<interface>
  <requires lib="gtk" version="4.0"/>
  <object id="window" class="GtkWindow">
    <property name="title">Test</property>
    <property name="resizable">0</property>
    <property name="child">
      <object class="GtkGrid">

        <child>
          <object class="GtkTextView" id="viewww">
            <property name="overwrite">1</property>
            <property name="monospace">1</property>
            <property name="input-purpose">digits</property>
            <property name="width-request">400</property>
            <property name="height-request">200</property>
            <property name="left-margin">10</property>
            <property name="right-margin">10</property>
            <property name="top-margin">10</property>
            <property name="bottom-margin">10</property>
          </object>
        </child>

        <child>
          <object class="GtkButton">
            <property name="label">READ</property>
            <layout>
              <property name="column">0</property>
              <property name="row">1</property>
            </layout>
          </object>
        </child>

        <child>
          <object class="GtkButton">
            <property name="label">WRITE</property>
            <layout>
              <property name="column">0</property>
              <property name="row">2</property>
            </layout>
          </object>
        </child>

      </object>
    </property>
  </object>
</interface>

如果要更改布局,请使用columnrow值以获得所需的输出。
对于预览保存到一些文件的内容,例如:window.ui和do gtk4-builder-tool preview main.ui

相关问题