我正在尝试使用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/

10-10 07:04