RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 1322996
Accepted
Anton-Vas
Anton-Vas
Asked:2022-08-31 17:49:36 +0000 UTC2022-08-31 17:49:36 +0000 UTC 2022-08-31 17:49:36 +0000 UTC

如何将小部件设置为调整大小以匹配主窗口的大小?

  • 772

我决定学习如何编写自己的应用程序,但遇到了对Qt Designer的误解。

完成任务:

这是更详细的想法。已经建议实施:如何在主窗口中创建个人小部件?

短的:

我想在一个窗口中编写一个简单的程序。它有 3 个独立的子窗口(见截图,大概显示了一些东西)。有人建议我使用 QSplitter。这解决了该问题,但出现了以下问题。

问题:

  1. 如何通过主窗口调整大小来实现小部件调整大小?
  2. 这可以在 Qt Designer 中完成吗?

我看到了类似的问题,但他们使用固定模板(按钮、文本、窗口等)创建了窗口。同时,我有可以手动调整大小的实时窗口。此外,如果我为Central 小部件选择LayOut,我将无法为 3 个窗口创建拆分器 (在我的情况下是 QFrame,因为将来我将在那里添加功能)

  1. 是否可以在同一个 Qt Designer 中添加放大条件?

我希望在不改变 1x1 纵横比的情况下,深灰色和浅绿色窗口与主窗口一起增长。

在此处输入图像描述

更新

ui文件。我想手动做菜单栏,所以值得考虑。

<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <class>GcsWindow</class>
 <widget class="QMainWindow" name="GcsWindow">
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>1000</width>
    <height>600</height>
   </rect>
  </property>
  <property name="windowTitle">
   <string>GcsWindow</string>
  </property>
  <property name="styleSheet">
   <string notr="true"/>
  </property>
  <widget class="QWidget" name="centralwidget">
   <property name="minimumSize">
    <size>
     <width>1000</width>
     <height>600</height>
    </size>
   </property>
   <property name="sizeIncrement">
    <size>
     <width>1</width>
     <height>1</height>
    </size>
   </property>
   <property name="baseSize">
    <size>
     <width>1000</width>
     <height>600</height>
    </size>
   </property>
   <widget class="QPushButton" name="BUT_Menu">
    <property name="geometry">
     <rect>
      <x>0</x>
      <y>0</y>
      <width>80</width>
      <height>30</height>
     </rect>
    </property>
    <property name="sizePolicy">
     <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
      <horstretch>0</horstretch>
      <verstretch>0</verstretch>
     </sizepolicy>
    </property>
    <property name="styleSheet">
     <string notr="true">QPushButton {
    background-color: rgb(235,235,235);
    border-radius: 1px;
    Text-align:center;

}
QPushButton:hover{
    background-color:rgb(225, 225, 225);
}
QPushButton:pressed {
    background-color: rgb(200,200,200);
    border-style: inset;
}
QPushButton:open{
    background-color: rgb(200,200,200);
    border-style: inset;
}</string>
    </property>
    <property name="text">
     <string>MENU</string>
    </property>
   </widget>
   <widget class="QSplitter" name="splitter_2">
    <property name="geometry">
     <rect>
      <x>0</x>
      <y>31</y>
      <width>1000</width>
      <height>569</height>
     </rect>
    </property>
    <property name="orientation">
     <enum>Qt::Horizontal</enum>
    </property>
    <property name="handleWidth">
     <number>1</number>
    </property>
    <widget class="QSplitter" name="splitter">
     <property name="baseSize">
      <size>
       <width>0</width>
       <height>0</height>
      </size>
     </property>
     <property name="orientation">
      <enum>Qt::Vertical</enum>
     </property>
     <property name="handleWidth">
      <number>1</number>
     </property>
     <widget class="QFrame" name="frame">
      <property name="baseSize">
       <size>
        <width>300</width>
        <height>300</height>
       </size>
      </property>
      <property name="styleSheet">
       <string notr="true">background-color: rgb(49, 49, 49);</string>
      </property>
      <property name="frameShape">
       <enum>QFrame::StyledPanel</enum>
      </property>
      <property name="frameShadow">
       <enum>QFrame::Raised</enum>
      </property>
     </widget>
     <widget class="QFrame" name="frame_2">
      <property name="baseSize">
       <size>
        <width>300</width>
        <height>269</height>
       </size>
      </property>
      <property name="styleSheet">
       <string notr="true">background-color: rgb(213, 255, 216);</string>
      </property>
      <property name="frameShape">
       <enum>QFrame::StyledPanel</enum>
      </property>
      <property name="frameShadow">
       <enum>QFrame::Raised</enum>
      </property>
     </widget>
    </widget>
    <widget class="QFrame" name="frame_3">
     <property name="styleSheet">
      <string notr="true">background-color: rgb(248, 194, 255);</string>
     </property>
     <property name="frameShape">
      <enum>QFrame::StyledPanel</enum>
     </property>
     <property name="frameShadow">
      <enum>QFrame::Raised</enum>
     </property>
    </widget>
   </widget>
  </widget>
 </widget>
 <resources/>
 <connections/>
</ui>

c++
  • 1 1 个回答
  • 10 Views

1 个回答

  • Voted
  1. Best Answer
    S. Nick
    2022-08-31T20:00:49Z2022-08-31T20:00:49Z

    您可以简单地在Qt Designer中创建一个包含元素的分隔符:

    1. 首先将您的小部件放在设计器中(它们不应该在布局中)。

    2. 选择要包含在拆分器中的小部件(按住CTL并单击它们)

    3. 右键单击选定的小部件,然后从“布局”菜单中
      选择Lay Out Horizontally in Splitter或Lay Out Vertically in Splitter。

    4. 现在将layout网格应用于选定的小部件。

    q1322996.ui

    <?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>640</width>
        <height>480</height>
       </rect>
      </property>
      <property name="windowTitle">
       <string>MainWindow</string>
      </property>
      <widget class="QWidget" name="centralwidget">
       <layout class="QHBoxLayout" name="horizontalLayout" stretch="0">
        <item>
         <widget class="QSplitter" name="splitter_2">
          <property name="orientation">
           <enum>Qt::Horizontal</enum>
          </property>
          <widget class="QFrame" name="frame">
           <property name="frameShape">
            <enum>QFrame::StyledPanel</enum>
           </property>
           <property name="frameShadow">
            <enum>QFrame::Raised</enum>
           </property>
           <property name="lineWidth">
            <number>2</number>
           </property>
           <layout class="QVBoxLayout" name="verticalLayout" stretch="0">
            <property name="leftMargin">
             <number>0</number>
            </property>
            <property name="topMargin">
             <number>0</number>
            </property>
            <property name="rightMargin">
             <number>0</number>
            </property>
            <property name="bottomMargin">
             <number>0</number>
            </property>
            <item>
             <widget class="QSplitter" name="splitter">
              <property name="orientation">
               <enum>Qt::Vertical</enum>
              </property>
              <widget class="QFrame" name="frame_2">
               <property name="minimumSize">
                <size>
                 <width>150</width>
                 <height>150</height>
                </size>
               </property>
               <property name="styleSheet">
                <string notr="true">background-color: rgb(85, 255, 127);</string>
               </property>
               <property name="frameShape">
                <enum>QFrame::StyledPanel</enum>
               </property>
               <property name="frameShadow">
                <enum>QFrame::Raised</enum>
               </property>
              </widget>
              <widget class="QFrame" name="frame_3">
               <property name="minimumSize">
                <size>
                 <width>150</width>
                 <height>150</height>
                </size>
               </property>
               <property name="styleSheet">
                <string notr="true">background-color: rgb(85, 255, 255);</string>
               </property>
               <property name="frameShape">
                <enum>QFrame::StyledPanel</enum>
               </property>
               <property name="frameShadow">
                <enum>QFrame::Raised</enum>
               </property>
              </widget>
             </widget>
            </item>
           </layout>
          </widget>
          <widget class="QFrame" name="frame_4">
           <property name="minimumSize">
            <size>
             <width>300</width>
             <height>300</height>
            </size>
           </property>
           <property name="styleSheet">
            <string notr="true">background-color: rgb(255, 170, 255);</string>
           </property>
           <property name="frameShape">
            <enum>QFrame::StyledPanel</enum>
           </property>
           <property name="frameShadow">
            <enum>QFrame::Raised</enum>
           </property>
          </widget>
         </widget>
        </item>
       </layout>
      </widget>
      <widget class="QMenuBar" name="menubar">
       <property name="geometry">
        <rect>
         <x>0</x>
         <y>0</y>
         <width>640</width>
         <height>21</height>
        </rect>
       </property>
      </widget>
     </widget>
     <resources/>
     <connections/>
    </ui>
    

    在此处输入图像描述

    • 0

相关问题

  • 编译器和模板处理

  • 指针。找到最小数量

  • C++,关于枚举类对象初始化的问题

  • 函数中的二维数组

  • 无法使用默认构造函数创建类对象

  • C++ 和循环依赖

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    表格填充不起作用

    • 2 个回答
  • Marko Smith

    提示 50/50,有两个,其中一个是正确的

    • 1 个回答
  • Marko Smith

    在 PyQt5 中停止进程

    • 1 个回答
  • Marko Smith

    我的脚本不工作

    • 1 个回答
  • Marko Smith

    在文本文件中写入和读取列表

    • 2 个回答
  • Marko Smith

    如何像屏幕截图中那样并排排列这些块?

    • 1 个回答
  • Marko Smith

    确定文本文件中每一行的字符数

    • 2 个回答
  • Marko Smith

    将接口对象传递给 JAVA 构造函数

    • 1 个回答
  • Marko Smith

    正确更新数据库中的数据

    • 1 个回答
  • Marko Smith

    Python解析不是css

    • 1 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5