Russian Qt Forum
Сентябрь 30, 2024, 18:33 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: QScrollArea не скролит сам себя  (Прочитано 2042 раз)
virtual_root
Гость
« : Сентябрь 22, 2012, 11:55 »

Доброго времени суток всем. У меня такая проблема, может кто сталкивался с ней, да поможет. Кучу тем подобных пересмотрела, но ничего не помогает...
Дело обстоит так: у меня есть класс формы унаследованный от QScrollArea. Эту форму я внедряю в компонент QWidget расположенный на другой форме. Форма унаследованная от QScrollArea больше по размеру чем компонент QWidget расположенный на другой форме, и мне нужно чтобы эта форма сама себя скролила, но сколько я не бьюсь ничего добиться не могу... Ребята, подскажите пожалуйста как так сделать чтобы форма унаследованная от QScrollArea скролила саму себя?
Мой код:
Код
C++ (Qt)
#ifndef SCROLLAREA_H
#define SCROLLAREA_H
 
#include <QScrollArea>
 
namespace Ui {
class ScrollArea;
}
 
class ScrollArea : public QScrollArea
{
   Q_OBJECT
 
public:
   explicit ScrollArea(QWidget *parent = 0);
   ~ScrollArea();
 
private:
   Ui::ScrollArea *ui;
};
 
#endif // SCROLLAREA_H
 

Код
C++ (Qt)
#include "scrollarea.h"
#include "ui_scrollarea.h"
 
ScrollArea::ScrollArea(QWidget *parent) :
   QScrollArea(parent),
   ui(new Ui::ScrollArea)
{
   ui->setupUi(this);
  this->setWidgetResizable(true);
  this->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Expanding);
}
 
ScrollArea::~ScrollArea()
{
   delete ui;
}
 

Код
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 "scrollarea.h"
 
Widget::Widget(QWidget *parent) :
   QWidget(parent),
   ui(new Ui::Widget)
{
   ui->setupUi(this);
   ScrollArea *scroll = new ScrollArea(ui->widget);
   scroll->show();
}
 
Widget::~Widget()
{
   delete ui;
}
 
« Последнее редактирование: Сентябрь 22, 2012, 12:01 от tiny developer » Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #1 : Сентябрь 22, 2012, 12:57 »

Ребята, подскажите пожалуйста как так сделать чтобы форма унаследованная от QScrollArea скролила саму себя?
Может все проблемы в том, что ScrollArea предназначена для прокрутки сторонних виджетов, а не самой себя?
Записан

Qt 5.11/4.8.7 (X11/Win)
virtual_root
Гость
« Ответ #2 : Сентябрь 22, 2012, 15:19 »

Я изменила QWidget на QScrollArea и теперь виджет прокручивается. Но осталась другая проблема: виджет который я прокручиваю программно изменяет свои размеры - растет, а scrollArea который его прокручивает никак не реагирует на это, он его просто не до скроливает... Я перепробовала уже кучу методов scrollArea, ну что-то никак не удается его заставить обновиться. Мне нужно чтобы если я программно увеличила виджет, то и scrollArea стала больше проскроливать его.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.107 секунд. Запросов: 22.