#c #qt #qt5
#c #qt #qt5
Вопрос:
У меня есть QMainWindow
и я вставил mdiArea
в главное окно.
Сначала вы должны увидеть следующее изображение:
Как вы видели, серая область mdiArea
и пробелы (поля) между главным окном и mdiArea
являются тем, что я хочу удалить.
Я использовал setContentsMargins
функцию, но ничего не делает.
Как я могу удалить эти пробелы?
Я хочу быть похожим на следующее изображение:
Ответ №1:
QMainWindow
имеет центральный виджет с макетом. Макет, который вы используете в QMainWindow
is, должен использоваться вместо его центрального виджета. Следовательно, вы должны вызвать
QWidget* QMainWindow::centralWidget()
Первый,
таким образом, вы можете сначала получить центральный виджет, а затем использовать
void QLayout::setContentsMargins(int left, int top, int right, int bottom)
чтобы настроить его макет. Приведенная ниже диаграмма взята из документации Qt.
Создание главного окна без центрального виджета не поддерживается. У вас должен быть центральный виджет, даже если это просто заполнитель.
Например, у вас может быть следующее в QMainWindow
конструкторе:
centralWidget()->layout()->setContentsMargins(0, 0, 0, 0);
statusBar()->hide();
ui->mainToolBar->hide();
Строка состояния и панель инструментов были скрыты, чтобы удалить как можно больше пустого пространства.
Комментарии:
1. Я написал этот код в конструкторе MainWindow. но, к сожалению, по-прежнему не хочет удалять пробелы.
2. @LionKing Что значит «не хочет удалять пробелы»? Разве это не то, чего вы хотите?
3. @LionKing ХОРОШО, я отредактировал свой пост, сначала нужно вызвать centralWidget и получить его макет.
4. Да, это все. но не могли бы вы, пожалуйста, что это значит
central widget
?5. @LionKing Это базовый виджет QMainWindow, я обновлю сообщение и предоставлю подробную информацию через минуту.