我现在只用C++创建我的应用程序,我创建了NavigationPane并添加了需要的Views容器。它工作正常,但我想捕获单击的Button,以使NavigationPane弹出当前页面并推送不同的页面(在运行时生成)。

如何实现,我尝试使用信号,但我认为我无法理解信号和QT_SLOTS的工作方式,对于NavigationPane而言,它没有像QT_SLOT那样的方法。

任何建议将被认真考虑。

最佳答案

首先,您需要将clicked()Button信号连接到pop()NavigationPane插槽。它看起来应该像这样:

// Connect the button's clicked() signal to the navigation pane's
//  pop() slot.
bool connectResult = QObject::connect(myButton,
     SIGNAL(clicked()),
     myPane,
     SLOT(pop()));

// Use the Q_ASSERT() function to test the return value and
// generate a warning message if the signal slot connection
// wasn’t successful.
Q_ASSERT(connectResult);

// Indicate that the variable connectResult isn't used in the
// rest of the app to prevent a compiler warning.
Q_UNUSED(connectResult);

关于buttons的页面可能会帮助您了解如何处理。为了更好地理解如何将对象连接在一起,您可能还需要查看信号和插槽文档。

然后,您必须在弹出后创建并推送新页面。为此,您只需要将popTransitionEnded (bb::cascades::Page *page)NavigationPane插槽连接到将完成此工作的自定义函数即可。
bool connectResult = QObject::connect(myPane,
     SIGNAL(popTransitionEnded(bb::cascades::Page*)),
     this,
     SLOT(createNewPageAndPushIt(bb::cascades::Page*)));

Q_ASSERT(connectResult);
Q_UNUSED(connectResult);

有关使用NavigationPane堆叠页面的更多详细信息,请参见this page

10-06 06:03