我正在尝试使用QStackedWidget
导航KeyPressEvent
项目。但我无法做到。我们应该为keyPressEvent
使用什么信号函数?
我的代码:
mywindow::mywindow() : QMainWindow()
{
stack = new QStackedWidget();
list1 = new QListWidget();
list2 = new QListWidget();
list3 = new QListWidget();
list1->addItem("Item 1");
list1->addItem("Item 2");
list2->addItem("Item 3");
list2->addItem("Item 4");
list3->addItem("Item 5");
list3->addItem("Item 6");
stack->addWidget(list1);
stack->addWidget(list2);
stack->addWidget(list3);
setCentralWidget(stack);
}
void mywindow::keyPressEvent(QKeyEvent *event)
{
switch(event->key())
{
case Qt::Key_Left:
connect(stack,SIGNAL(KeyPressEvent(QKeyEvent *event)),stack,SLOT(setCurrentIndex(int)));
break;
case Qt::Key_Right:
connect(stack,SIGNAL(currentRowChanged(int)),stack,SLOT(setCurrentIndex(int)));
break;
}
}
答案 0 :(得分:1)
您需要获取当前索引,然后手动递增,然后进行设置。这门课没有“下一步”的方法。所以,你会写这样的东西:
void mywindow::keyPressEvent(QKeyEvent *event)
{
switch(event->key())
{
case Qt::Key_Left:
stack->setCurrentIndex(stack->currentIndex() - 1); // <--- Added
break;
case Qt::Key_Right:
stack->setCurrentIndex(stack->currentIndex() + 1); // <--- Added
break;
}
}
基于QStackedWidget实现,你可能需要自己处理索引和溢出索引,所以要注意这一点。