Я хотел экран в моем приложении, которое должно выглядеть следующим образом:
Это означает, что кнопка на экране должна появляться в центре экрана как по горизонтали, так и по вертикали.
У кого-нибудь есть как это сделать. Я написал следующий код, но он не работает.
Container *contentContainer = new Container();
contentContainer->setLayout(StackLayout::create());
//contentContainer->setVerticalAlignment(VerticalAlignment::Center);
contentContainer->setHorizontalAlignment(HorizontalAlignment::Center);
Button* submitButton = new Button();
submitButton->setText("Submit");
Button* cancelButton = new Button();
cancelButton->setText("Cancel");
contentContainer->add(submitButton);
contentContainer->add(cancelButton);
Page * testPage = new Page();
testPage ->setContent(contentContainer);
Sheet *testSheet = new Sheet();
testSheet->setContent( LoginSheetPage );
testSheet->open();
Чтобы получить его в центре, сначала вы должны создать контейнер с помощью docklayout (), а внутри этого контейнера вы должны создать stacklayout () с помощью кнопок и установить контейнер docklayout () в качестве содержимого страницы.
Container *contentContainer = new Container();
contentContainer->setLayout(StackLayout::create());
contentContainer->setVerticalAlignment(VerticalAlignment::Center);
contentContainer->setHorizontalAlignment(HorizontalAlignment::Center);
Button* submitButton = new Button();
submitButton->setText("Submit");
Button* cancelButton = new Button();
cancelButton->setText("Cancel");
contentContainer->add(submitButton);
contentContainer->add(cancelButton);
Container *rootContainer = new Container();
rootContainer->setLayout(DockLayout::create());
rootContainer->setVerticalAlignment(VerticalAlignment::Fill);
rootContainer->setHorizontalAlignment(HorizontalAlignment::Fill);
rootContainer->add(contentContainer);
Page * testPage = new Page();
testPage ->setContent(rootContainer);
Когда вам нужно указать, где ваш контент должен быть прикреплен, вы должны использовать DockLayout. Затем вы устанавливаете свойства вертикального и горизонтального выравнивания для его дочерних элементов в зависимости от того, где вы хотите, чтобы они были пристыкованы. В твоем случае:
Container *sheet_container = Container::create().layout(DockLayout::create());
Container *button_container = Container::create()
.layout(StackLayout::create())
.horizontal(HorizontalAlignment::Center)
.vertical(VerticalAlignment::Center);
Button *submit_button = new Button();
submit_button->setText("Submit");
Button *cancel_button = new Button();
cancel_button->setText("Cancel");
button_container->add(submit_button);
button_container->add(cancel_button);
sheet_container->add(button_container);
Page *test_page = new Page();
test_page->setContent(sheet_container);
Sheet *sheet = new Sheet();
sheet->setContent(test_page);
sheet->open();
Это ответ на ваш вопрос о создании макета, но я бы посоветовал вам взглянуть на рекомендации по пользовательскому интерфейсу и использовать что-то вроде диалог за это. Кроме того, я бы предложил использовать QML для макета вместо C ++, если у вас нет особых требований, которые сложны в QML.