以下是如何NavigationPane
在 C++ 中使用推送页面:
源文件:
#include <bb/cascades/Application>
#include <bb/cascades/Button>
#include <bb/cascades/Label>
#include <bb/cascades/ActionItem>
#include <bb/cascades/Container>
#include <bb/cascades/DockLayout>
#include <bb/cascades/TitleBar>
#include <bb/cascades/NavigationPaneProperties>
#include "Sandoxproject.hpp"
using namespace bb::cascades;
SandboxApp::SandboxApp(bb::cascades::Application *app)
: QObject(app)
{
_navPane.reset(NavigationPane::create());
Page* firstPage = createFirstPage();
_navPane ->push(firstPage);
_secondPage.reset(createSecondPage());
app->setScene(_navPane.data());
}
bb::cascades::Page* SandboxApp::createFirstPage() {
Page* page = new Page();
Container* content = new Container();
TitleBar* titleBar = TitleBar::create().visibility(ChromeVisibility::Visible).title("First Page");
page->setTitleBar(titleBar);
content->setLayout(DockLayout::create());
Button* button = Button::create().text("Go to another page").horizontal(HorizontalAlignment::Center).vertical(VerticalAlignment::Center);
connect(button, SIGNAL(clicked()), this, SLOT(pushPage()));
content->add(button);
page->setContent(content);
return page;
}
bb::cascades::Page* SandboxApp::createSecondPage() {
Page* page = new Page();
TitleBar* titleBar = TitleBar::create().visibility(ChromeVisibility::Visible).title("Second Page");
page->setTitleBar(titleBar);
ActionItem* backAction = ActionItem::create();
connect(backAction, SIGNAL(triggered()), _navPane.data(), SLOT(pop()));
page->setPaneProperties(NavigationPaneProperties::create().backButton(backAction));
Container* content = new Container();
content->setLayout(DockLayout::create());
content->add(Label::create().text("This is the second page").horizontal(HorizontalAlignment::Center).vertical(VerticalAlignment::Center));
page->setContent(content);
return page;
}
void SandboxApp::pushPage() {
qDebug("pushing another page...");
_navPane->push(_secondPage.data());
}
头文件:
#ifndef Sandoxproject_HPP_
#define Sandoxproject_HPP_
#include <bb/cascades/NavigationPane>
#include <bb/cascades/Page>
#include <QObject>
namespace bb { namespace cascades { class Application; }}
class SandboxApp : public QObject
{
Q_OBJECT
public:
SandboxApp(bb::cascades::Application *app);
virtual ~SandboxApp() {}
private slots:
void pushPage();
private:
bb::cascades::Page* createFirstPage();
bb::cascades::Page* createSecondPage();
QScopedPointer<bb::cascades::NavigationPane> _navPane;
QScopedPointer<bb::cascades::Page> _secondPage;
Q_DISABLE_COPY(SandboxApp);
};
#endif /* Sandoxproject_HPP_ */