我已经尝试了很多东西,因为已经创建了很多主题来回答这个问题。但是,到目前为止,我找到的任何提示都没有解决我正在处理的问题..
非常简单:我正在努力使QGridLayout可滚动。它可能包含几个个人小部件,小部件的数量不固定。当x小部件多于x时,QGridLayout必须是可滚动的,x是任意数字。
问题是:当我使用QScrollArea时,QScrollArea似乎隐藏了整个布局(仅显示滚动区域的背景颜色)。当我单独使用QGridLayout时,我的视图当然不可滚动,但一切都按预期工作。
我可能错过了一些东西,我的假设是:
这是主要代码的有趣部分:
QScrollArea *scrollArea = new QScrollArea;
QWidget *resultsPage = new QWidget;
booksGrid = new QGridLayout;
booksGrid->setSizeConstraint(QLayout::SetMinAndMaxSize);
resultsPage->setLayout(booksGrid);
scrollArea->setBackgroundRole(QPalette::Dark);
scrollArea->setWidget(resultsPage);
mainWidget->addWidget(scrollArea);
booksGrid被声明为类属性 mainWidget是一个QStackedWidget
让我知道您需要更多信息! ;)
谢谢你们!
答案 0 :(得分:0)
由于我在代码片段中看不到任何可疑内容,因此我制作了MCVE来重现您的问题:
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0,50,35)
y = np.random.exponential(1, len(x))
y2 = np.random.exponential(1, len(x))
plt.fill_between(x,y, step="pre", alpha=0.4)
plt.fill_between(x,y2, step="pre", alpha=0.4)
plt.plot(x,y, drawstyle="steps")
plt.plot(x,y2, drawstyle="steps")
plt.show()
在Windows 10(64位)的VS2013,Qt 5.9.2中编译和测试:
快照是在开始(a),调整大小后(b)和滚动(c)之后拍摄的。
对我而言,一切看起来都像预期的那样。
您也可以编辑和测试样品。如果它显示与您的应用程序相同的破坏行为,那么您的Qt版本中出现了问题(否则您的应用程序中存在某些内容)。
答案 1 :(得分:0)
经过一天的斗争,我发现问题很简单:resultsPage是一个个人化的小部件,其中包含了我的风格的其他几个小部件,其中未指定大小排列在QGridLayout < / p>
为了说明这一点: QMainWidget - &gt; QScrollArea - &gt;个人化QWidget resultsPage - &gt; QGridLayout - &gt;具有未指定大小的个人化QWidget s 结果
所以,我唯一需要做的就是在QWidget结果的构造函数中使用此方法设置固定大小: setFixedSize(int w,int h);