48常用控件_QWidget的focusPolicy属性

发布于:2025-04-10 ⋅ 阅读:(36) ⋅ 点赞:(0)

设置控件获取到焦点的策略比如某个控件能否用鼠标选中或者能否通过 tab 键选中
所谓"焦点”,指的就是能选中这个元素.接下来的操作(比如键盘操作),就都是针对该焦点元素进行的了.这个对于 输入框,单选框,复选框等控件非常有用的.
这个事情就和 war3 或者 sc2 中,先选中单位,再下达命令是一样的.

①计算机中的"焦点”,对于键盘操作非常明显
界面上有一个输入框此时必须要选中这个输入框,接下来键盘按键才会输入到输入框中
如果选中的是别的控件,或者别的窗口,此时键盘的输入就不会进入到这个输入框中.

②GUI 中,窗口/控件 焦点是非常关键的~~
线上笔试~~
笔试链接.
点击链接,打开一个网站,就可以在线做题~~
如果我遇到不会的题,能不能切到百度这里来搜一下???
窗口焦点的问题~~
你在人家的网页中去做题,网页是属于始终获取到焦点的状态的
一旦你切到百度/其他程序(比如 VS/IDEA) 立刻人家的网页就能感知到“失去焦点”

服务器就能收集到你这样的动作
从而衡量你是否涉嫌作弊~~

③ 一般来说,一个控件获取到焦点,主要是两种方式
1.鼠标点击
2.键盘的 tab

 

Qt::FocusPolicy 是⼀个枚举类型. 取值如下
• Qt::NoFocus :控件不会接收键盘焦点(想label这种~~)
• Qt::TabFocus :控件可以通过Tab键接收焦点
• Qt::ClickFocus :控件在⿏标点击时接收焦点
• Qt::StrongFocus :控件可以通过Tab键和⿏标点击接收焦点 (默认值)
• Qt::WheelFocus : 类似于 Qt::StrongFocus , 同时控件也通过⿏标滚轮获取到焦点 (新增
的选项, ⼀般很少使⽤).
代码示例: 理解不同的 focusPolicy
1)在界面上创建四个单行输入框(Line Edit)

 

 2)修改第一个输入框的 focusPolicy 属性为 Qt::StrongFocus (默认取值,一般不用额外修改)

此时运行程序,可以看到,使用鼠标单击/tab,就可以移动光标所在输入框,从而接下来的输入就是针对
这个获取焦点的输入框展开的了


3)修改第二个输入框的 focusPolicy 为Qt::NoFocus ,则第二个输入框不会被 tab/鼠标左键
选中


此时这个输入框也就无法输入内容了


4)修改第二个输入框 focusPolicy 为 t::TabFocus ,则只能通过tab 选中,无法通过鼠标选中

5)修改第二个输入框 focusPolicy 为 Qt::ClickFocus,则只能通过鼠标 选中无法通过Tab键