我现在只用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。