Установка политики размера в qt

У меня есть виджет и графическое представление в центральном виджете моего приложения. Виджет имеет четыре кнопки. Я добавил оба в горизонтальном макете, используя следующий код:

QHBoxLayout *layout = new QHBoxLayout;
layout->addWidget(ui->entityWidget);
layout->addWidget(ui->graphicsView);
ui->centralWidget->setLayout(layout);

Я установил минимальную политику размера виджета и предпочтительную для графического представления. Когда я запускаю приложение, виджет отображается соответствующим образом в верхнем левом углу, но верхний левый угол графического представления находится в середине центрального виджета, что не требуется. Он должен быть рядом с виджетом.

Как изменить политику размера для правильного размещения графического представления в главном окне?


person Kamalpreet Grewal    schedule 18.07.2014    source источник


Ответы (2)


Похоже, вы не устанавливаете родительский виджет для макета. Это, вероятно, ваша проблема.

Пытаться:

QHBoxLayout *layout = new QHBoxLayout(ui->centralWidget);
layout->addWidget(ui->entityWidget);
layout->addWidget(ui->graphicsView);
ui->centralWidget->setLayout(layout);

Кроме того, если вы опубликуете, как вы настроили SizePolicy, это поможет.

person tinkertime    schedule 18.07.2014
comment
Он остается прежним. Я установил политику размера в Qt Designer. - person Kamalpreet Grewal; 18.07.2014

Просто добавьте растяжку в макет сразу после GraphicsView:

layout->addStretch();
person Ezee    schedule 18.07.2014
comment
После того, как я это сделаю, виджет в левом верхнем углу не виден. Графический вид перекрывает его. - person Kamalpreet Grewal; 18.07.2014
comment
Причина может быть в политике размера, но в любом случае, почему бы вам не разместить весь виджет, как вам нужно, в Ui? Почему вы используете дизайн пользовательского интерфейса и кода? Также проблема может быть в центральном виджете. Он размещен в макете? Если я правильно понял ваши требования, вам нужно сделать следующие вещи с самого начала: 1. Разместите на форме горизонтальный или вертикальный макет (в зависимости от того, как вы хотите разместить кнопки). 2. Перетащите кнопки на макет. Снимок экрана 3. Поместите графическое представление справа от макета. 4. Нажмите на пустое место и выберите Расположить по горизонтали. - person Ezee; 18.07.2014
comment
Скриншот 5. Затем вы можете настроить поля в свойствах формы. дайте мне знать, если вам нужно что-то еще - person Ezee; 18.07.2014
comment
Я добавлял все кнопки в виджет, а не в макет, который потом добавлял в макет вместе с графическим представлением. Большое спасибо за разъяснения. :) - person Kamalpreet Grewal; 18.07.2014