Политика размера диалогов Qt

Я пытаюсь установить политику размера для пользовательского класса QDialog, который я создал. Идея звучит довольно просто для меня, но, похоже, мне не хватает очевидной концепции или парадигмы фреймворка Qt. Я создал класс LineDialog ниже, который содержит 5 QRadioButtons. Причина, по которой они все заключены в дополнительный уровень вложенности макета, заключается в том, что я скоро добавлю другие группы кнопок, если предположить, что смогу заставить работать одну. Я хочу, чтобы при открытии диалоговое окно имело минимальный размер, при этом все равно отображались все переключатели. Вывод, который я в настоящее время получаю, представляет собой диалоговое окно размером с весь экран компьютера с 5 переключателями, разделенными равным количеством вертикальных промежутков между тоннами отступов на правой стороне.

Я пробовал звонить setSizePolicy(QSizePolicy::Minumum) на обоих line_dialog указатель на вызывающий класс и все содержимое LineDialog, как это видно по закомментированным строкам. Тем не менее, я получаю ошибки компилятора о том, что SetSizePoliy является частной функцией и не может быть вызван, как я делаю. Какой правильный способ сделать это?

(Я не прошел и правильно освободил свою кучу памяти, поэтому, пожалуйста, не обращайте на это внимания)

linedialog.cpp

#include "linedialog.h"
LineDialog::LineDialog(QWidget * parent): QDialog(parent)
{
QGridLayout *main_layout = new QGridLayout();
QGroupBox *line_style_group = createLineStyleGroup();
main_layout->addWidget(line_style_group, 0, 0);
setLayout(main_layout);
}

QGroupBox *LineDialog::createLineStyleGroup() {
QGroupBox *line_style_box = new QGroupBox(this);
QButtonGroup *line_style_group = new QButtonGroup(this);

QRadioButton *solid_line = new QRadioButton("Solid line", this);
QRadioButton *dash_line = new QRadioButton("Dash line", this);
QRadioButton *dot_line = new QRadioButton("Dot line", this);
QRadioButton *dash_dot_line = new QRadioButton("Dash dot line", this);
QRadioButton *dash_dot_dot_line = new QRadioButton("Dash dot dot line", this);

//solid_line->setSizePolicy(QSizePolicy::Minimum);
//dash_line->setSizePolicy(QSizePolicy::Minimum);
//dot_line->setSizePolicy(QSizePolicy::Minimum);
//dash_dot_line->setSizePolicy(QSizePolicy::Minimum);
//dash_dot_dot_line->setSizePolicy(QSizePolicy::Minimum);

/** logical line style button grouping */
line_style_group->addButton(solid_line);
line_style_group->addButton(dash_line);
line_style_group->addButton(dot_line);
line_style_group->addButton(dash_dot_line);
line_style_group->addButton(dash_dot_dot_line);

QVBoxLayout *line_style_box_layout = new QVBoxLayout();
line_style_box_layout->addWidget(solid_line);
line_style_box_layout->addWidget(dash_line);
line_style_box_layout->addWidget(dot_line);
line_style_box_layout->addWidget(dash_dot_line);
line_style_box_layout->addWidget(dash_dot_dot_line);

line_style_box->setLayout(line_style_box_layout);
return line_style_box;
}

вызывающий класс

. . .
LineDialog *line_dialog = new LineDialog(this);
line_dialog.show();
. . .

0

Решение

Задача ещё не решена.

Другие решения


По вопросам рекламы [email protected]