我正在尝试使用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;
}
}
最佳答案
您将需要获取当前索引,然后手动对其进行递增,然后进行设置。该类没有“下一个”方法。因此,您将编写如下内容:
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实现,虽然您可能需要处理索引并在索引上自己溢出,所以请注意这一点。
关于c++ - 通过QStackedWidget项中的键盘导航,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20989281/