在Qt中我删除了xml编辑器中的中央窗口小部件,并将其替换为QScrollArea
,这在我在QtDesigner中预览时有效:
但是当我运行该程序时,它看起来像这样:
您是不是要删除中央窗口小部件,还是我需要更改sizePolicy
?
这是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>179</width>
<height>191</height>
</rect>
</property>
<property name="windowTitle">
<string>MainWindow</string>
</property>
<widget class="QScrollArea" name="scrollArea">
<property name="widgetResizable">
<bool>true</bool>
</property>
<widget class="QWidget" name="scrollAreaWidgetContents">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>224</width>
<height>628</height>
</rect>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
<widget class="QLabel" name="label">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<pointsize>75</pointsize>
</font>
</property>
<property name="midLineWidth">
<number>2</number>
</property>
<property name="text">
<string>label
</string>
</property>
<property name="alignment">
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
</property>
</widget>
</item>
</layout>
</widget>
</widget>
<widget class="QMenuBar" name="menuBar">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>179</width>
<height>19</height>
</rect>
</property>
</widget>
<widget class="QToolBar" name="mainToolBar">
<attribute name="toolBarArea">
<enum>TopToolBarArea</enum>
</attribute>
<attribute name="toolBarBreak">
<bool>false</bool>
</attribute>
</widget>
<widget class="QStatusBar" name="statusBar"/>
</widget>
<layoutdefault spacing="6" margin="11"/>
<resources>
<include location="1.qrc"/>
</resources>
<connections/>
</ui>
答案 0 :(得分:2)
检查ui_mainwindow.h
。看看是否有像这样的行:
MainWindow->setCentralWidget(scrollArea);
您可以在mainwindow.cpp
中使用QMainWindow::setCentralWidget
功能将中央窗口小部件设置为主窗口:
setCentralWidget(myScrollArea);
我认为没有任何方法可以改变设计师的中心部件。
答案 1 :(得分:1)
当我使用你的ui文件内容运行程序时,我正在获得正确的窗口。我不知道为什么它不会像你一样创造问题。
我建议你在Qt Creator中使用Qt设计器,我感觉更容易使用。
另外,我认为问题可能是其中之一:
通常,中央窗口小部件很好,因为它提供了放置所有布局的基础。因此,最好将它放在用户界面中。
在这里,请注意在将小部件插入布局后,您不必简单地破坏这些布局。设计师将重置小部件的宽度和高度。所以你必须重新设置它们。
接下来,如果设计器中加载的ui文件在磁盘上更改时不是最新的,则可能发生这种情况。
跟踪小部件的所有布局,几何和sizePolicy。 我将无法在代码中回答,因为当我使用你给出的ui文件内容时,它不会引起问题。
在主窗口上创建一个布局,您可以在其中放置QScrollArea。这将根据布局扩展它。
P.S。:我在Qt Creator中打开它。
因此,当您手动设置scrollarea的几何图形时,请提供更多信息是否已修复。