【Qt】QWidget的focusPolicy属性

 QWidget的focusPolicy属性

设置控件获取到焦点的策略。

所谓“焦点”,就是能选中这个元素。

计算机中的“焦点”,对于键盘操作非常明显。

例如:界面上有一个输入框,此时必须要选中这个输入框,接下来键盘按键才会输入到输入框中。如果选中的是别的控件,或者别的窗口,此时键盘的输入就不会进入到这个输入框中。

在GUI中,对于控件/窗口来说,焦点是非常关键的。

API 说明

focusPolicy()

获取该 widget 的 focusPolicy, 返回 Qt::FocusPolicy

setFocusPolicy(Qt::FocusPolicy policy)

设置 widget 的 focusPolicy.

Qt::FocusPolicy是一个枚举类型,取值如下:

  • Qt::NoFocus :控件不会接收键盘焦点

  • Qt::TabFocus :控件可以通过Tab键接收焦点

  • Qt::ClickFocus :控件在⿏标点击时接

### QWidget 类概述 QWidgetQt 框架中最基本的用户界面类,提供了构建应用程序窗口和用户界面的基础构件[^1]。作为所有窗口部件的基类,许多常见的 UI 组件如按钮、编辑框等都是通过继承自 QWidget 实现的[^3]。 ### 基本属性与功能 #### 尺寸控制 QWidget 提供了一系列函数来管理控件大小及其布局方式,包括但不限于 `setFixedSize()` 设置固定尺寸;`resize()` 改变当前组件大小;以及 `sizeHint()` 获取推荐显示尺寸提示信息等功能[^2]。 #### 可见性设置 为了控制 widget 是否可见,可以调用 `show()`, `hide()` 或者更灵活地利用 `setVisible(bool visible)` 方法实现动态切换显示状态的操作。 #### 焦点处理 当涉及到键盘输入焦点时,则可通过 `setFocusPolicy(Qt::FocusPolicy policy)` 来指定该 widget 接收焦点的方式,并配合使用 `hasFocus()` 判断其是否已获得焦点。 ```cpp // 示例代码展示如何创建并初始化一个简单的 Widget 对象 #include "widget.h" #include <QApplication> int main(int argc, char *argv[]) { QApplication a(argc, argv); // 创建一个新的 Widget 实例 Widget w; // 显示此 widget w.show(); return a.exec(); } ``` #### 子对象操作 对于复杂的应用程序来说,在父级 widget 下添加多个子 widgets 非常普遍。这可以通过构造函数参数传递 parent 参数完成关联关系建立工作,或者之后再手动调用 `setParent(QWidget*)` 函数来进行调整。 ### 事件响应机制 除了上述提到的功能外,QWidget 还支持丰富的事件驱动编程模型。开发者能够重载虚函数以捕捉特定类型的交互行为,比如鼠标点击 (`mousePressEvent`) 和按键按下 (`keyPressEvent`) 等事件的发生时刻。 ```cpp void Widget::Handle() { qDebug()<<"Handling event..."; } void Widget::Change() { qDebug()<<"Changing state..."; } ```
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值