QtDesigner - 两个具有不同大小的相同组合框

Posted

技术标签:

【中文标题】QtDesigner - 两个具有不同大小的相同组合框【英文标题】:QtDesigner - Two identical Comboboxes having different sizes 【发布时间】:2019-01-24 15:51:52 【问题描述】:

我正在开发一个小型测试程序(翻译器)以进入 QtDesigner。 这是它在设计器中的样子:

如您所见,两个组合框具有不同的宽度 - 我没有手动更改任何宽度值,我只更改了 alingment 和布局。除了文本之外,整个左半部分和右半部分是相同的,除了左侧文本字段是 QTextEdit 而右侧是 QTextBrowser。

似乎也与组合框中存储的项目无关,遗憾的是我无法手动更改项目的大小,因为它们似乎绑定在布局中。

谁能告诉我这里发生了什么?这不是一个大问题,但它看起来很痛苦。

<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <class>MainWindow</class>
 <widget class="QMainWindow" name="MainWindow">
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>711</width>
    <height>402</height>
   </rect>
  </property>
  <property name="maximumSize">
   <size>
    <width>790</width>
    <height>402</height>
   </size>
  </property>
  <property name="windowTitle">
   <string>MainWindow</string>
  </property>
  <widget class="QWidget" name="centralwidget">
   <property name="minimumSize">
    <size>
     <width>663</width>
     <height>0</height>
    </size>
   </property>
   <property name="maximumSize">
    <size>
     <width>795</width>
     <height>414</height>
    </size>
   </property>
   <layout class="QGridLayout" name="gridLayout_2">
    <item row="0" column="0">
     <layout class="QGridLayout" name="gridLayout">
      <item row="0" column="0">
       <layout class="QVBoxLayout" name="InputLayout">
        <item alignment="Qt::AlignHCenter">
         <widget class="QLabel" name="Label_Input">
          <property name="text">
           <string>Input:</string>
          </property>
         </widget>
        </item>
        <item>
         <widget class="QTextEdit" name="Text_Input">
          <property name="undoRedoEnabled">
           <bool>false</bool>
          </property>
          <property name="html">
           <string>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
p, li  white-space: pre-wrap; 
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;&quot;&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
          </property>
         </widget>
        </item>
        <item>
         <widget class="QComboBox" name="Combo_Input">
          <property name="enabled">
           <bool>true</bool>
          </property>
          <item>
           <property name="text">
            <string>Auto</string>
           </property>
          </item>
          <item>
           <property name="text">
            <string>en</string>
           </property>
          </item>
          <item>
           <property name="text">
            <string>de</string>
           </property>
          </item>
         </widget>
        </item>
       </layout>
      </item>
      <item row="0" column="1">
       <layout class="QVBoxLayout" name="ButtonLayout">
        <item>
         <widget class="QPushButton" name="Button_Translate">
          <property name="text">
           <string>=&gt;</string>
          </property>
         </widget>
        </item>
        <item>
         <widget class="QPushButton" name="Button_Swap">
          <property name="text">
           <string>&lt;-&gt;</string>
          </property>
         </widget>
        </item>
       </layout>
      </item>
      <item row="0" column="2">
       <layout class="QVBoxLayout" name="OutputLayout">
        <item alignment="Qt::AlignHCenter">
         <widget class="QLabel" name="Label_Output">
          <property name="text">
           <string>Translated result:</string>
          </property>
         </widget>
        </item>
        <item>
         <widget class="QTextBrowser" name="Text_Output">
          <property name="html">
           <string>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
p, li  white-space: pre-wrap; 
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;&quot;&gt;
&lt;p align=&quot;center&quot; style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
          </property>
         </widget>
        </item>
        <item>
         <widget class="QComboBox" name="Combo_Output">
          <item>
           <property name="text">
            <string>en</string>
           </property>
          </item>
          <item>
           <property name="text">
            <string>de</string>
           </property>
          </item>
         </widget>
        </item>
       </layout>
      </item>
     </layout>
    </item>
   </layout>
  </widget>
 </widget>
 <resources/>
 <connections/>
</ui>

我在尝试解决此问题时偶然发现的另一个大问题是,在打破布局并设置其最小尺寸后,我无法再更改组合框的对齐方式 - 即使在我 ctrl+z 回到以前在哪里!

【问题讨论】:

请将整个ui文件贴出来,方便其他人在qt设计器中测试。 完成了,希望你能在那里找到一些东西...... 我无法使用您发布的 ui 文件复制此内容。对我来说,这两个组合框会扩展以填充可用空间。您使用的是什么版本的 qt,在哪个平台上? 是的,看来我急于回家我粘贴了一个稍微错误的 .ui 文件,如果您将两个组合框设置为右对齐,您将获得与我发布的图像中的相同 【参考方案1】:

您可以通过在minimumsize 部分设置更高的值来解决此问题。 例如,尝试最小宽度=30px。

编辑:通过避免使用 setAlignment 并通过使用 QSpacer 替换它来解决问题

【讨论】:

我知道,但这并不能解决大问题,这就是为什么会发生这种情况 - 我只是进一步测试,这似乎不是因为一个是 QTextEdit 而另一个是 QTextBrowser,这意味着窗口应该是对称的... 组合框是否具有完全相同的属性?它们的内容是什么? 完全一样。现在的内容不一样,但我尝试将它们设置为相同,但没有帮助。另外,当我将两个组合框都设置为最小尺寸时,它不再允许我在布局中对齐它们,所以我想我只需要像这样离开它 * * * 编辑:这实际上似乎是一个错误 - 之后破坏布局并更改最小尺寸,我什至无法在 ctrl+z 之后将它们与之前对齐! 你在使用 QGridLayout 吗?如果您尝试将其替换为垂直和水平布局的组合呢? 我只对主窗口使用网格,然后 3 个垂直列用于输入、=> / 和输出,这 3 个水平列,我使用了网格布局,以便在主窗口确实如此 - 在主窗口上使用垂直/水平对齐让我搞砸了

以上是关于QtDesigner - 两个具有不同大小的相同组合框的主要内容,如果未能解决你的问题,请参考以下文章

Plotly Express 条形图中具有不同组大小的组条

如何合并具有不同列的相同行?

为啥 netCDF4 文件大小与写入方式如此不同?

QGraphicsView 的大小与预期不同

Mysql显示其他不同的单元格数据与同组下的组

是否可以在 keycloak 中为不同组中的用户添加不同的角色?