问题
如何用上下键在一个界面内切换焦点,达到类似按下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->setAccepted(false);
break;
default:
QLineEdit::keyPre

本文探讨了如何使用上下键在Qt界面中实现焦点切换,类似于tab键的效果。通过分析和实验,包括在主窗口、子窗口以及将子窗口提升为全局窗口的情况,得出结论:只有在全局窗口中,才能实现焦点的循环切换。
最低0.47元/天 解锁文章
5871

被折叠的 条评论
为什么被折叠?



