使用 qt c++ 在 BlackBerry 10 应用程序的屏幕中间显示按钮

Display buttons in the middle of the screen in BlackBerry 10 app using qt c++

我想要在我的应用程序中显示如下所示的屏幕:

这意味着屏幕中的按钮应该出现在屏幕的水平和垂直中心。

有没有人知道怎么做。我已经编写了以下代码,但它不起作用。

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

这回答了您关于制作布局的问题,但我建议您查看 UI 指南并为此使用 Dialog 之类的内容。如果您没有 QML 难以满足的特定要求,我还建议使用 QML 而不是 C++ 进行布局设计。