QScrollArea отсутствует полоса прокрутки
Я думаю, что это та же проблема, что и:QScrollArea изменяет размер QWidget
но нет решения. так позвольте мне разоблачить проблему.
Тест 2, унаследованный от QWidget:составлено:вектор QSpinBoxQScrollAreaQVBoxLayouttest2 (QWidget) <- QScrollArea <- QVBoxLayout <- SpinboxПроблемы :Нет полосы прокрутки[ИСПРАВЛЕНО] Внутренняя часть полосы прокрутки сжимается, чтобы вместить так мало места, что ничего не может быть прочитано (окно может быть изменено во время выполнения, что заставит внутреннюю часть увеличиваться и быть читаемой, тем не менее, полоса прокрутки не появится)Я думаю, что проблемы приходят из одного источника :: Размер подсказки и макеты (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
вместо виджета <- ScrollBar <- Макет
но это обходной путь не совсем решение ... Я собираюсь примерить пример, который я привел.
оно работает. У кого-нибудь есть лучшее решение ??