Как управлять QSplitter в Qt Designer
Когда я нажимаю кнопку, я вызываю диалог, в котором пользователь выбирает вещи и нажимает "ОК" в конце. Я хочу сплиттер в этом диалоговом окне. В левой панели будет показано дерево, а справа отобразится другое. Как мне это сделать?
Из самого примера Qt:
QSplitter *splitter = new QSplitter(parent);
QListView *listview = new QListView;
QTreeView *treeview = new QTreeView;
QTextEdit *textedit = new QTextEdit;
splitter->addWidget(listview);
splitter->addWidget(treeview);
splitter->addWidget(textedit);
Итак, в этом примере сплиттер создается без какого-либо ресурса диалога. Если мне нужно создать этот путь, это означало бы, что я должен создать все мои элементы управления в коде, а не Qt Creator.
Каков правильный способ сделать это, когда мне нужны другие элементы управления на экране?
Ответы
Ответ 1
Вы можете просто создать разделитель, содержащий элементы в Qt Designer:
-
Сначала разместите свои виджеты в своем диалоговом окне или виджет в дизайнере (они не должны быть в макете)
-
Выберите виджетов, которые должны быть в сплиттере (удерживая CTL и нажимая на них)
-
Щелкните правой кнопкой мыши на выбранном виджет и выберите Макет Lay out Horizontally в Splitter или Lay out Vertically в Splitter.
-
Теперь примените макет сетки к диалоговому окну, и все будет в порядке. Вы увидите что-то подобное в Object Inspector View:
![enter image description here]()
Ответ 2
Вы можете создать свои элементы управления в файле .ui с помощью Qt Designer (интегрированного в Qt Creator). Внутри Qt Designer добавьте объект QWidget
к вашему диалоговому окну. Затем из класса QDialog, который вы напишете непосредственно в своем конструкторе, создайте свой QSplitter, используя объект QWidget
в качестве родителя.
Таким образом вы можете создать все, кроме объекта сплиттера, из Qt Designer.
Я думаю, что также возможно создать QSplitter
(так как вы можете создать элемент QButton
, QCheckBox
...) непосредственно из Qt Designer.