Навигация по клавиатуре в элементе QStackedWidget

Я пытаюсь ориентироваться 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;
}
}

3

Решение

Вам нужно будет получить текущий индекс, а затем увеличить его вручную, а затем установить его. Для этого класса нет «следующего» метода. Итак, вы бы написали что-то вроде этого:

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, вам может потребоваться обработать и переполнить себя для индексов, так что имейте это в виду.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]