Редактирование QSplitter в дизайнере форм
В статье Синхронное масштабирование графиков
на форме из проекта с примером используется контейнер QSplitter,
в котором размещаются 3 графика. В дизайнере форм в палитре компонентов
такой контейнер отсутствует, поэтому предлагается прописать его
в файл формы *.ui вручную. Данная статья
призвана оказать помощь в создании формы, содержащей QSplitter
с графиками.
Итак, открываем в дизайнере пустую форму, например, mainwindow.ui.
Положим, что с нее убраны за ненадобностью главное меню, панель
инструментов и панель состояния (хотя они могут и присутствовать
и ничем не помешают). Находим в палитре компонентов контейнер Widget
на вкладке Containers и помещаем его на
форму. По умолчанию он получит имя widget.
Изменяем его размеры так, чтобы внутри было достаточно места. Находим
на этой же вкладке компонент Frame и размещаем
его в трех экземплярах внутри ранее размещенного виджета
один под другим, разделив имеющееся пространство на 3 примерно равные
части. Для определенности присвоим этим фреймам имена frame1,
frame2 и frame3.
Внутрь каждого фрейма помещаем график компонент QwtPlot,
который можно найти на вкладке Qwt Widgets
палитры компонентов. (Для того чтобы виджеты Qwt были видны в дизайнере форм, необходимо
установить плагин Qwt.) Присвоим графикам имена
plot1, plot2 и
plot3 соответственно. В результате должна получиться форма,
изображенная на рисунке, для контроля рядом с ней изображено содержимое
инспектора объектов
Закрываем файл формы в дизайнере и открываем его в текстовом редакторе.
Находим строку
<widget class="QWidget" name="widget" native="true">
и заменяем ее следующими строками
<widget class="QSplitter" name="splitter">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="opaqueResize">
<bool>false</bool>
</property>
Закрываем текстовый редактор, сохранив внесенные изменения, и опять
открываем файл в дизайнере форм. В инспекторе объектов должен появиться
QSplitter
Теперь задействуем компоновщики, их можно найти на панели инструментов
дизайнера
Для центрального виджета выбираем "Скомпоновать
по сетке" (элемент "С" на рисунке), компоновщику
сохраним имя gridLayout. Для фреймов выбираем
выбираем "Скомпоновать по горизонтали" (элемент "Г"
на рисунке), компоновщикам дадим имена соответственно horLayout1,
horLayout2 и horLayout3.
В результате форма принимает упорядоченный вид
Учитывая, что места на форме не очень много, можно
уменьшить величину отступов и тем самым предоставить немного больше
места графикам. Для этого выделяем центральный виджет и в инспекторе
объектов правим свойства компоновщика
layoutLeftMargin: 3
layoutTopMargin: 3
layoutRightMargin: 3
layoutBottomMargin: 3
Поочередно выделяем фреймы и устанавливаем следущее
layoutLeftMargin: 1
layoutTopMargin: 1
layoutRightMargin: 1
layoutBottomMargin: 1
layoutSpacing: 1
Окончательный вид формы изображен на рисунке
|