我认为这与以下问题相同:QScrollArea resizing QWidget
但没有解决方案。所以让我暴露这个问题。
- 测试 2 继承自 QWidget:
- 组成:
- QSpinBox 的向量
- QScrollArea
- QVBoxLayout
- test2 (QWidget) <- QScrollArea <- QVBoxLayout <- Spinbox
- 组成:
- 问题 :
- 没有滚动条
- [已修复] 滚动条的内部被缩小以适应如此小的空间,无法读取任何内容(窗口可以在执行期间调整大小,这将导致内部变大并且可读,但不会出现滚动条)
我认为问题来自单一来源:: Size Hints and Layouts ( http://qt-project.org/doc/qt-5.1/qtwidgets/qscrollarea.html#details )
第二个问题(小部件缩小)可以通过设置“c->setSizeConstraint(QLayout::SetMinimumSize);”来解决
我目前正在寻找缺少滚动条的解决方案
这是显示我的问题的代码:
<c++>
#include <QWidget>
#include <QScrollArea>
#include <QVBoxLayout>
#include <QSpinBox>
class test2 : public QWidget
{
Q_OBJECT
public:
test2(QWidget *parent = 0) :QWidget(parent)
{
b = new QScrollArea(this);
c = new QVBoxLayout;
for (int i = 0; i < 10; i++)
{
a.push_back(new QSpinBox());
c->addWidget(a[i]);
}
c->setSizeConstraint(QLayout::SetMinimumSize);
b->setLayout(c);
b->resize(200, 200);
}
~test2()
{
for (int i = 0; i < 10; i++)
delete a[i];
}
protected:
QVector<QSpinBox*> a;
QScrollArea* b;
QVBoxLayout* c;
};
int main(int argc, char *argv[])
{
///*
QApplication app(argc, argv);
test2 a;
a.show();
return app.exec();//*/
}
编辑::在这里找到了一个解决方案:http: //qt-project.org/forums/viewthread/295
如果你不想在这里阅读大量无用的代码,他做了什么 :: 他扭曲了小部件内的布局
解决方案::从ScrollBar <- Widget <- Layout继承Object
而不是小部件 <- ScrollBar <- 布局
但它不是一个真正的解决方案......我将尝试我给出的例子。
有用。有没有人有更好的解决方案??