Когда я нажимаю кнопку, я открываю диалог, в котором пользователь выбирает вещи и нажимает «ОК» в конце. Я хочу разделитель в этом диалоге. Левая панель покажет дерево, а правая покажет что-то еще. Как я могу сделать это правильно?
Из самого примера 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.
Как правильно сделать это, когда мне нужны другие элементы управления на экране?
Вы можете просто создать разделитель, содержащий элементы в Qt Designer:
Сначала поместите ваши виджеты в диалог или виджет в дизайнере (они не должны быть в макете)
Выберите виджеты, которые вы хотите разместить в сплиттере (удерживая CTL и нажимая на них)
Щелкните правой кнопкой мыши на выбранном виджете и из раскладка выбор меню Выложить горизонтально в Splitter или же Выложить вертикально в Splitter.
Теперь примените сетку к диалогу, и все должно быть в порядке. Вы увидите что-то вроде этого в Object Inspector View:
Вы по-прежнему можете создавать свои элементы управления в файле .ui, используя Qt Designer (интегрирован в Qt Creator). В Qt Designer добавьте QWidget
возражать против вашего диалога. Затем из производного класса QDialog вы напишите прямо в своем конструкторе, создадите свой QSplitter, используя QWidget
объект как родитель.
Таким образом, вы можете создавать все объекты, кроме сплиттера, из Qt Designer.
Я думаю, что также возможно создать QSplitter
(как вы можете создать QButton
, QCheckBox
…) непосредственно из Qt Designer.