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

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

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: [РЕШЕНО] QMainWindow с масштабированием ?  (Прочитано 9998 раз)
Денис
Гость
« : Январь 20, 2015, 19:15 »

Вопрос к знатокам как сделать QMainWindow масштабируемым ? Чтобы автоматически менялись и шрифты и и была привязка элементов к краям окна ? Пошарил в гугле ничего путевого не нашел ... Пишут мол надо несколько окон создать и переключаться между ними ... но как то не хотелось бы. Может можно подругому ?
« Последнее редактирование: Январь 30, 2015, 18:56 от Денис » Записан
Денис
Гость
« Ответ #1 : Январь 20, 2015, 22:37 »

Или есть ли возможность к главному окну подтянуть Scroll, чтобы уменьшив его по высоту можно было прокрутить содержимое ?
Записан
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« Ответ #2 : Январь 21, 2015, 07:33 »

Или есть ли возможность к главному окну подтянуть Scroll, чтобы уменьшив его по высоту можно было прокрутить содержимое ?

Тогда, QScrollArea
Записан

Денис
Гость
« Ответ #3 : Январь 22, 2015, 21:26 »

Или есть ли возможность к главному окну подтянуть Scroll, чтобы уменьшив его по высоту можно было прокрутить содержимое ?

Тогда, QScrollArea

А по другому как-то можно без скрола ?
Записан
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« Ответ #4 : Январь 22, 2015, 22:13 »

Или есть ли возможность к главному окну подтянуть Scroll, чтобы уменьшив его по высоту можно было прокрутить содержимое ?

Тогда, QScrollArea

А по другому как-то можно без скрола ?

setHorizontalScrollBarPolicy ( Qt::ScrollBarPolicy )
setVerticalScrollBarPolicy ( Qt::ScrollBarPolicy )

http://qt-project.org/doc/qt-4.8/qt.html#ScrollBarPolicy-enum : Qt::ScrollBarAlwaysOff

Тогда QScrollArea будет без скролов
Записан

Денис
Гость
« Ответ #5 : Январь 26, 2015, 23:36 »

Или есть ли возможность к главному окну подтянуть Scroll, чтобы уменьшив его по высоту можно было прокрутить содержимое ?

Тогда, QScrollArea

А по другому как-то можно без скрола ?

setHorizontalScrollBarPolicy ( Qt::ScrollBarPolicy )
setVerticalScrollBarPolicy ( Qt::ScrollBarPolicy )

http://qt-project.org/doc/qt-4.8/qt.html#ScrollBarPolicy-enum : Qt::ScrollBarAlwaysOff

Тогда QScrollArea будет без скролов

Хорошо а как QScrollArea установить на глвный виджет ?
Записан
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« Ответ #6 : Январь 27, 2015, 00:39 »

Или есть ли возможность к главному окну подтянуть Scroll, чтобы уменьшив его по высоту можно было прокрутить содержимое ?

Тогда, QScrollArea

А по другому как-то можно без скрола ?

setHorizontalScrollBarPolicy ( Qt::ScrollBarPolicy )
setVerticalScrollBarPolicy ( Qt::ScrollBarPolicy )

http://qt-project.org/doc/qt-4.8/qt.html#ScrollBarPolicy-enum : Qt::ScrollBarAlwaysOff

Тогда QScrollArea будет без скролов

Хорошо а как QScrollArea установить на глвный виджет ?

QScrollArea * area = new QScrollArea();
mainWindow->setCentralWidget(area);
Записан

Денис
Гость
« Ответ #7 : Январь 27, 2015, 02:26 »

Или есть ли возможность к главному окну подтянуть Scroll, чтобы уменьшив его по высоту можно было прокрутить содержимое ?

Тогда, QScrollArea

А по другому как-то можно без скрола ?

setHorizontalScrollBarPolicy ( Qt::ScrollBarPolicy )
setVerticalScrollBarPolicy ( Qt::ScrollBarPolicy )

http://qt-project.org/doc/qt-4.8/qt.html#ScrollBarPolicy-enum : Qt::ScrollBarAlwaysOff

Тогда QScrollArea будет без скролов

Хорошо а как QScrollArea установить на глвный виджет ?

QScrollArea * area = new QScrollArea();
mainWindow->setCentralWidget(area);


Я делаю в конструкторе класса вот так:

Код:
    QScrollArea *scrollArea = new QScrollArea();
    this->setCentralWidget(scrollArea);

И приложение у меня вылетает ... как правильно его добавить ? или не внутри конструктора надо это делать ? И можно ли это сделать через Qt Desiner ? Или только ручками надо прописывать ?
Записан
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« Ответ #8 : Январь 27, 2015, 07:09 »

Все в порядке с кодом.
Какая ошибки? Что отладчик показывает? Какие ос? Версия qt?
Если скините минимально компилябельный проект с вашей проблемой, то можно не гадать Улыбающийся
Записан

Денис
Гость
« Ответ #9 : Январь 27, 2015, 22:29 »

Все в порядке с кодом.
Какая ошибки? Что отладчик показывает? Какие ос? Версия qt?
Если скините минимально компилябельный проект с вашей проблемой, то можно не гадать Улыбающийся

Сильно много скидывать ... Ругается на выводимые элементы в ui с Qt Desiner-а ...
Если же сделать вот так:
Код:
    scrollArea = new QScrollArea();
    scrollArea -> setWidget(this->centralWidget());
    scrollArea->setVerticalScrollBarPolicy(Qt::ScrollBarAsNeeded);
    setCentralWidget(scrollArea);
Не ругается но ничего не видно:

С рисовалки ничего не выводится ... ругается именно на вывод ui->элементов в окно и ничего больше ... Что я сделал не так ?
Записан
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« Ответ #10 : Январь 27, 2015, 23:25 »

Все в порядке с кодом.
Какая ошибки? Что отладчик показывает? Какие ос? Версия qt?
Если скините минимально компилябельный проект с вашей проблемой, то можно не гадать Улыбающийся

Сильно много скидывать ... Ругается на выводимые элементы в ui с Qt Desiner-а ...
Если же сделать вот так:
Код:
    scrollArea = new QScrollArea();
    scrollArea -> setWidget(this->centralWidget());
    scrollArea->setVerticalScrollBarPolicy(Qt::ScrollBarAsNeeded);
    setCentralWidget(scrollArea);
Не ругается но ничего не видно:

С рисовалки ничего не выводится ... ругается именно на вывод ui->элементов в окно и ничего больше ... Что я сделал не так ?

Забавно...

Сначала вы размещаете центральный виджет текущего окна на скролл зону: scrollArea -> setWidget(this->centralWidget());
Потом на тот центральный виджет, который был на скролл зоне, размещаете скролл зону, которая на самом деле его и содержит: setCentralWidget(scrollArea);
 Улыбающийся
« Последнее редактирование: Январь 27, 2015, 23:27 от gil9red » Записан

Денис
Гость
« Ответ #11 : Январь 27, 2015, 23:42 »

Все в порядке с кодом.
Какая ошибки? Что отладчик показывает? Какие ос? Версия qt?
Если скините минимально компилябельный проект с вашей проблемой, то можно не гадать Улыбающийся

Сильно много скидывать ... Ругается на выводимые элементы в ui с Qt Desiner-а ...
Если же сделать вот так:
Код:
    scrollArea = new QScrollArea();
    scrollArea -> setWidget(this->centralWidget());
    scrollArea->setVerticalScrollBarPolicy(Qt::ScrollBarAsNeeded);
    setCentralWidget(scrollArea);
Не ругается но ничего не видно:

С рисовалки ничего не выводится ... ругается именно на вывод ui->элементов в окно и ничего больше ... Что я сделал не так ?

Забавно...

Сначала вы размещаете центральный виджет текущего окна на скролл зону: scrollArea -> setWidget(this->centralWidget());
Потом на тот центральный виджет, который был на скролл зоне, размещаете скролл зону, которая на самом деле его и содержит: setCentralWidget(scrollArea);
 Улыбающийся

А если сделать следующим образом:
Код:
    scrollArea = new QScrollArea();
    scrollArea -> setWidget(this->centralWidget());
    scrollArea->setVerticalScrollBarPolicy(Qt::ScrollBarAsNeeded);
    scrollArea->show();

Та даже если без show():
Код:
    scrollArea = new QScrollArea();
    scrollArea -> setWidget(this->centralWidget());
    scrollArea->setVerticalScrollBarPolicy(Qt::ScrollBarAsNeeded);

Все равно на СкролАрие не хочет отображать ui. Может можно где-то почитать как правильно это сделать ?
« Последнее редактирование: Январь 27, 2015, 23:44 от Денис » Записан
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« Ответ #12 : Январь 28, 2015, 05:37 »

Посмотрите, в архиве лежит пример создания формы и размещение centralWidget формы на QScrollArea.

А лучше бы вы рассказали, что хотите в итоге  Подмигивающий
Записан

Денис
Гость
« Ответ #13 : Январь 28, 2015, 09:54 »

Посмотрите, в архиве лежит пример создания формы и размещение centralWidget формы на QScrollArea.

А лучше бы вы рассказали, что хотите в итоге  Подмигивающий

Смотри происходит тоже самое:


Два окна вместо одного ... (
Версия Qt 5.3.0 ... блин как же его правильно собрать может быть надо еще какие то флаги у QMainWindow включить и они у различных версий разные ?
Записан
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« Ответ #14 : Январь 28, 2015, 10:55 »

Давайте я попытаюсь угадать, что вам нужно? Улыбающийся
У вас формочка в ui, и вам нужно ее содержимое, то которое находится в centralWidget поместить на QScrollArea и, при этом, чтобы эта QScrollArea оказалась в форме? Улыбающийся
Записан

Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  


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