在QStackedWidget项目中浏览键盘

时间:2014-01-08 07:18:30

标签: c++ qt qwidget qtgui qt-events

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

1 个答案:

答案 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实现,你可能需要自己处理索引和溢出索引,所以要注意这一点。