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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: QLayout  (Прочитано 4004 раз)
Firefox
Гость
« : Январь 22, 2014, 08:23 »

Здравствуйте. пытаюсь в Layout добавить части формы, которые отдельными классами сделаны, но равномерного размещения не получается а все криво.
Код:
#include "widget.h"
#include "ui_widget.h"

Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);

//по ширине различные элементы по высоте одинаковые
    lft= new left(this);
    rt= new right(this);
    ctr= new centr(this);


     QHBoxLayout *hlay_centr=new QHBoxLayout;
     hlay_centr->setSpacing(0);
     hlay_centr->setMargin(0);
     hlay_centr->addWidget(lft);
     hlay_centr->addWidget(ctr);
     hlay_centr->addWidget(rt);
     setLayout(hlay_centr);


}
Записан
carrygun
Гость
« Ответ #1 : Январь 22, 2014, 08:52 »

Картинку хотябы покажите. И от каких классов унаследована эта троица?
Записан
Firefox
Гость
« Ответ #2 : Январь 22, 2014, 13:36 »

классы унаследованы от QWidget. в них только форма создана при помощи дизайнера.
« Последнее редактирование: Январь 22, 2014, 13:39 от Firefox » Записан
Firefox
Гость
« Ответ #3 : Январь 22, 2014, 13:42 »

это вся картинка с Layout


отдельно класс left вид


« Последнее редактирование: Январь 22, 2014, 13:45 от Firefox » Записан
Firefox
Гость
« Ответ #4 : Январь 22, 2014, 13:46 »

содержание класса left
Код:
#include "left.h"
#include "ui_left.h"

left::left(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::left)
{
    ui->setupUi(this);
}

left::~left()
{
    delete ui;
}
Записан
carrygun
Гость
« Ответ #5 : Январь 23, 2014, 04:56 »

Виджеты скорее всего подстраиваются под внутреннее содержимое. Тут либо задавать им конкретные размеры (самим контейнерам) либо поиграться с какими еще параметрами, типа stretch, sizePolicy.

А писать интерфейс в коде - это по условию задачи задумано? В дизайнере можно быстрее и проще же.
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #6 : Январь 23, 2014, 12:34 »

А писать интерфейс в коде - это по условию задачи задумано? В дизайнере можно быстрее и проще же.
несогласен. когда на форме много всяких компонентов, скомпонованных в дизайнере (лэйаутов тоже много), то когда приходится добавлять новый компонент, это просто тихий ужас. в коде же это равносильно просто «перетасовке» лэйаутов, что куда проще. ну а простые виджеты естественно быстрее в дизайнере спроектировать.
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Smogg
Гость
« Ответ #7 : Январь 23, 2014, 17:02 »

простые виджеты естественно быстрее в дизайнере спроектировать.
И там же в дизайнере проверить взаимодействие SizePolicy между элементами. Когда в одном лэйауте (особенно когда какой-нить виджет является контейнером или в сетке) собраны элементы с разным SizePolicy, то получаются достаточно неочевидные взаимовлияния на финальное расположение.
Записан
Firefox
Гость
« Ответ #8 : Январь 23, 2014, 18:06 »

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


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