qt 控件的焦点事件

在 Qt 中,设置焦点策略是通过 QWidgetsetFocusPolicy() 方法来实现的。焦点策略控制了一个控件何时和如何获取焦点。Qt 提供了几种常见的焦点策略,以帮助管理控件的焦点行为。

常见的焦点策略

  1. Qt::NoFocus:控件不接受焦点。
  2. Qt::TabFocus:控件可以通过按 Tab 键获得焦点。
  3. Qt::ClickFocus:控件可以通过鼠标点击获得焦点。
  4. Qt::StrongFocus:控件可以通过鼠标点击或键盘按键(例如 Tab 键)获得焦点。
  5. Qt::WheelFocus:控件可以通过鼠标滚轮获得焦点。
cpp 复制代码
#include <QWidget>
#include <QPushButton>
#include <QVBoxLayout>
#include <QApplication>

class MyWidget : public QWidget {
public:
    MyWidget() {
        // 创建按钮
        QPushButton *button1 = new QPushButton("Button 1", this);
        QPushButton *button2 = new QPushButton("Button 2", this);
        
        // 设置按钮的焦点策略
        button1->setFocusPolicy(Qt::ClickFocus);  // 通过点击获得焦点
        button2->setFocusPolicy(Qt::StrongFocus); // 可以通过点击或键盘Tab获得焦点
        
        // 创建布局
        QVBoxLayout *layout = new QVBoxLayout(this);
        layout->addWidget(button1);
        layout->addWidget(button2);
        
        setLayout(layout);
    }
};

int main(int argc, char *argv[]) {
    QApplication app(argc, argv);
    
    MyWidget widget;
    widget.show();
    
    return app.exec();
}