Изменение местоположений привязки QDockWidget по умолчанию? - PullRequest
0 голосов
/ 07 марта 2019

Я пытаюсь смоделировать пользовательский интерфейс из приложения wxWidgets в QT. Тем не менее, в исходном приложении они имеют виджеты Dock, которые могут фиксироваться и перемещаться, за исключением того, что занимают главное окно.

Example UI

Кажется, что каждое окно является виджетом дока, кроме главного окна. И если я хочу переместить окно «Наборы данных» (вверху слева) справа от окна «Настройка вывода», я могу:

Example UI II

Так что теперь моя цель состояла в том, чтобы попытаться получить пользовательский интерфейс в QT, чтобы, по крайней мере, выполнить виджеты в левой части основного виджета. Что в моем случае, я смог по крайней мере получить ширину и высоту с некоторыми проблемами, чтобы показать то же самое. Тем не менее, я не могу создать QDockWidget, такой как Настройка вывода, и сделать так, чтобы он был привязан к другим. И другая проблема возникает, когда я пытаюсь переместить прикрепляемый виджет, он не будет привязываться вправо или влево от других виджетов.

My UI

Здесь у меня проблемы. Я не могу привязать его к любой из сторон виджетов. Это то, что нужно будет жестко закодировать? Я знаю, что видел другие примеры онлайн, которые выглядят ужасно похожими на этот макет. Однако все они жестко закодированы. И было бы намного проще, если бы я мог просто использовать создателя для добавления ползунков и панелей инструментов с течением времени. И если это не то, что мне нужно для жесткого кода, как я могу изменить места, где мои виджеты могут привязываться? Я попытался сделать сетку, но виджеты не уходят в сетку.

1 Ответ

1 голос
/ 07 марта 2019

Включив вложение док-станции в главном окне, вы можете добиться более гибкого размещения виджетов дока, в том числе расположения виджетов дока рядом друг с другом.В Qt Designer выберите главное окно и на панели Property Editor отметьте флажок dockNestingEnabled (присутствует в разделе QMainWindow).В качестве альтернативы, вы можете достичь того же результата, вызвав метод QMainWindow::setDockNestingEnabled в своем коде.

Если вы хотите, чтобы ваше приложение запускалось с закрепленными рядом виджетами, как в вашем ссылочном приложении, вы должныКурорт по методу QMainWindow::splitDockWidget.Например, вы можете создать начальную компоновку в Qt Designer, такую ​​как изображенная ниже.

enter image description here

Далее вы можете переставить виджеты док-станции вкод конструктора главного окна,

MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) {
  ui->setupUi(this);

  // Changes the dock widgets arrangement.
  splitDockWidget(ui->dock1, ui->dock3, Qt::Orientation::Horizontal);
  splitDockWidget(ui->dock1, ui->dock2, Qt::Orientation::Vertical);
}

, который приведет к приведенному ниже результату.

enter image description here

...