问题
如何用上下键在一个界面内切换焦点,达到类似按下tab键的效果。
分析
单个页面内切换
查看Qt文档,发现通过QWidget::setTabOrder可以设置子控件的tab顺序,在Ubuntu系统下按tab键可以按序访问。
编程时可以通过focusNextPrevChild实现类似按下tab键的效果。
实验:用上下键实现控件焦点切换
实验一 主窗口下按序访问
//CMyEdit.h
#ifndef MYEDIT_H
#define MYEDIT_H
#include <QLineEdit>
class MyEdit : public QLineEdit
{
Q_OBJECT
public:
MyEdit(QWidget *parent = nullptr);
protected:
virtual void keyPressEvent(QKeyEvent *event);
};
#endif // MYEDIT_H
//CMyEdit.cpp
#include "myedit.h"
#include <QKeyEvent>
MyEdit::MyEdit(QWidget*parent)
:QLineEdit(parent)
{
}
void MyEdit::keyPressEvent(QKeyEvent *event)
{
switch (event->key()) {
case Qt::Key_Down:
case Qt::Key_Up:
event->setA