Russian Qt Forum

Qt => Вопросы новичков => Тема начата: virtual_root от Октябрь 02, 2012, 20:14



Название: Помогите справиться с QScrollArea
Отправлено: virtual_root от Октябрь 02, 2012, 20:14
Добрый вечер ребята! Пожалуйста подскажите мне пожалуйста что я делаю не так.. уже целую неделю вожусь, много примеров пересмотрела, но не могу никак понять почему у меня не работает мой код..
Моя проблема: у меня есть две формы widget и form. На форме widget расположен компонент QScrollArea в который я программно устанавливаю вторую форму form, которая является наследником от QWidget. Она заведомо большего размера. Но скролл у QScrollArea  почему-то не появляется!
Что я уже только не делала, но не хочет он никак скролировать мою форму!
Вот мой код:
Код
C++ (Qt)
#ifndef WIDGET_H
#define WIDGET_H
 
#include <QWidget>
 
namespace Ui {
class Widget;
}
 
class Widget : public QWidget
{
   Q_OBJECT
 
public:
   explicit Widget(QWidget *parent = 0);
   ~Widget();
 
private:
   Ui::Widget *ui;
};
 
#endif // WIDGET_H
 
Код
C++ (Qt)
#include "widget.h"
#include "ui_widget.h"
#include "form.h"
 
Widget::Widget(QWidget *parent) :
   QWidget(parent),
   ui(new Ui::Widget)
{
   ui->setupUi(this);
   ui->scrollArea->setWidget(new Form());
   ui->scrollArea->setWidgetResizable(true);
   ui->scrollArea->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOn);
}
 
Widget::~Widget()
{
   delete ui;
}
 
Код
C++ (Qt)
#ifndef FORM_H
#define FORM_H
 
#include <QWidget>
 
namespace Ui {
class Form;
}
 
class Form : public QWidget
{
   Q_OBJECT
 
public:
   explicit Form(QWidget *parent = 0);
   ~Form();
 
private:
   Ui::Form *ui;
};
 
#endif // FORM_H
 
Код
C++ (Qt)
#include "form.h"
#include "ui_form.h"
 
Form::Form(QWidget *parent) :
   QWidget(parent),
   ui(new Ui::Form)
{
   ui->setupUi(this);
}
 
Form::~Form()
{
   delete ui;
}
 
Ребята, пожалуйста, помогите справиться с проблемой!


Название: Re: Помогите справиться с QScrollArea
Отправлено: Alex Custov от Октябрь 02, 2012, 20:47
Цитировать
widgetResizable : bool

This property holds whether the scroll area should resize the view widget.

If this property is set to false (the default), the scroll area honors the size of its widget. Regardless of this property, you can programmatically resize the widget using widget()->resize(), and the scroll area will automatically adjust itself to the new size.

If this property is set to true, the scroll area will automatically resize the widget in order to avoid scroll bars where they can be avoided, or to take advantage of extra space.


Название: Re: Помогите справиться с QScrollArea
Отправлено: virtual_root от Октябрь 03, 2012, 09:50
спасибо огромное заработало!!! У меня ещё важный вопросик, а если я программно потом ещё увеличиваю размер виджета который внутри QScrollArea, как заставить QScrollArea обновить прокручиваемую область?


Название: Re: Помогите справиться с QScrollArea
Отправлено: virtual_root от Октябрь 03, 2012, 12:36
всё автоматически происходит! всем спасибо!!!