При ручной компоновке виджетам все же придаются абсолютные пози­ции, но размеры виджетов становятся пропорциональными размеру окна, а не жест­ко кодируются в программе.

Мы устанавливаем в конструкторе FindFileDialog минимальный размер формы на значение 265 х 190 и ее начальный размер на значение 365 х 240. В обработчике событий resizeEvent () мы отдаем все дополнительное пространство виджетам, раз­меры которых мы хотим увеличить. Это обеспечивает плавное изменение вида фор­мы при изменении пользователем ее размеров.


Рис. 6.2. Изменение размеров диалогового окна, допускающего изменение своих размеров

Точно так же, как при абсолютном позиционировании, при ручной компоновке в программе приходится жестко задавать много констант, рассчитываемых програм­мистом. Написание подобной программы представляет собой нудное занятие, осо­бенно если проект изменяется. И все-таки существует риск отсечения текста. Этого риска можно избежать, принимая во внимание идеальные размеры дочерних видже­тов, но это еще больше усложняет программу.

Самый удобный метод компоновки виджетов на форме - использование менедже­ров компоновки Qt. Менеджеры компоновки обеспечивают осмысленные, принимае­мые по умолчанию значения параметров для каждого типа виджета и учитывают иде­альный размер каждого виджета, который, в свою очередь, обычно зависит от шрифта виджета, его стиля и содержимого.


Глава 6. управление компоновкой

Применение QHBoxLayout И QVBoxLayout достаточно очевидное, однако с QGridLay­out дело обстоит несколько сложнее. Менеджер QGridLayout работает с; двухмерной сеткой ячеек. Текстовая метка Qlabel, расположенная в Верхнем левом углу этого менеджера компоновки, имеет координаты (0,0), а соответствующая строка редакти­рования QLineEdit имеет координаты (0, 1). Флажок QCheckBox размещается в двух столбцах; он занимает Ячейки с координатами (2,0) и (2,1). Расположенные под ним объекты QTreeWidget и QLabel также занимают два столбца. Вызовы функции addWid-get () имеют следующий формат:

v. layoutr>addWidget(виджет, строка, .столбец, колСтрок, колСтолбцов);

J Здесь виджет является дочерним виджетом, который вставляется в менеджер компоновки, (строка, столбец) - координаты верхней левой ячейки,


<< назад вперед >>