Слово central в методе setCentralWidget()
не имеет ничего общего с важностью, но если вы проверите макет, имеющий QMainWindow, мы увидим, что он находится в центральной позиции:
Должен ли я всегда найти способ сгруппировать их и установить группу в качестве центрального виджета?Или я мог бы просто случайно выбрать один? Может быть только один центральный виджет, поэтому, если вы хотите иметь несколько виджетов в центральной позиции, вы должны создать новый виджет, который является контейнером, и установить другой виджет через макеты.
что происходит с нецентральными виджетами?Существуют ли определенные различия между центральными и нецентральными виджетами, которые могут повлиять на их поведение позже? Нет никакой разницы.
Скажите в окне центрального виджета вышеЯ размещаю два QLabels симметрично относительно точной центральной точки.В этом случае какой QLabel должен быть центральным виджетом?Любой из них подойдет?
Вам не нужно выбирать, вы можете 2 QLabels быть частью centralWigdet, CentralWidget относится только к центральной позиции, например:
#include <QtWidgets>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QMainWindow w;
QLabel left_label("left");
left_label.setAlignment(Qt::AlignCenter);
QLabel right_label("rigth");
right_label.setAlignment(Qt::AlignCenter);
QWidget *central_widget = new QWidget;
QHBoxLayout *lay = new QHBoxLayout(central_widget);
lay->addWidget(&left_label);
lay->addWidget(&right_label);
w.setCentralWidget(central_widget);
w.show();
return a.exec();
}
Если любой виджет в порядке, почему настройка центрального виджета так критично требуется QMainWindow?
Вам не обязательнонеобходимо установить centralwidget, но QMainWindow в отличие от других виджетов уже имеет определенный макет, поэтому, если вы хотите разместить виджеты, вы должны использовать этот метод.
centralwidget относится к относительной позиции, но это не совсемцентральное положение:
#include <QtWidgets>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QMainWindow w;
QLabel *central_widget = new QLabel("Central Widget");
central_widget->setAlignment(Qt::AlignCenter);
w.setCentralWidget(central_widget);
QDockWidget *dock = new QDockWidget("left");
w.addDockWidget(Qt::LeftDockWidgetArea, dock);
dock->setWidget(new QTextEdit);
w.show();
return a.exec();
}