Отображение кнопок в середине экрана в приложении BlackBerry 10 с использованием переполнения стека qt

Я хотел экран в моем приложении, которое должно выглядеть следующим образом:

введите описание изображения здесь

Это означает, что кнопка на экране должна появляться в центре экрана как по горизонтали, так и по вертикали.

У кого-нибудь есть как это сделать. Я написал следующий код, но он не работает.

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();

0

Решение

Чтобы получить его в центре, сначала вы должны создать контейнер с помощью 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);
2

Другие решения

Когда вам нужно указать, где ваш контент должен быть прикреплен, вы должны использовать 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.

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector