【Qt开发】常用控件(六)
目录
1 -> font
1.1 -> 相关 API
1.2 -> 代码示例
1.2.1 -> 在 Qt Designer 中设置字体属性
1.2.2 -> 在代码中设置字体属性
2 -> toolTip
2.1 -> 相关 API
2.2 -> 代码示例
3 -> focusPolicy
3.1 -> 相关 API
3.2 -> 代码示例
1 -> font
1.1 -> 相关 API
API | 说明 |
font() | 获取当前 widget 的字体信息。返回 QFont 对象 |
setFont(const QFont& font) | 设置当前 widget 的字体信息 |
关于 QFont
属性 | 说明 |
family | 字体家族。比如 “楷体”,“宋体”,“微软雅黑” 等 |
pointSize | 字体大小 |
weight | 字体粗细。以数值方式表示粗细程度取值范围为 [0,99],数值越大,越粗 |
bold | 是否加粗。设置为 true,相当于 weight 为 75。设置为 false 相当于 weight 为 50 |
italic | 是否倾斜 |
underline | 是否带有下划线 |
strikeOut | 是否带有删除线 |
1.2 -> 代码示例
1.2.1 -> 在 Qt Designer 中设置字体属性
1. 在界面上创建一个 label
2. 在右侧的属性编辑区,设置该 label 的 font 相关属性
在这里调整上述属性,可以实时的看到文字的变化。
3. 执行程序,观察效果
1.2.2 -> 在代码中设置字体属性
1. 在代码中创建 label,objectName 使用默认的 label
#include "widget.h"
#include "ui_widget.h"
#include <QLabel>Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);QLabel* label = new QLabel(this);label->setText("这是一段文本!!!");
}Widget::~Widget()
{delete ui;
}
2. 修改 widget.cpp
#include "widget.h"
#include "ui_widget.h"
#include <QLabel>Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);QLabel* label = new QLabel(this);label->setText("这是一段文本!!!");// 创建字体对象QFont font;// 字体家族font.setFamily("楷体");// 字体大小font.setPixelSize(30);// 是否加粗font.setBold(true);// 是否倾斜font.setItalic(true);// 是否带下划线font.setUnderline(true);// 是否带删除线font.setStrikeOut(true);// 把font对象设置到label中label->setFont(font);
}Widget::~Widget()
{delete ui;
}
3. 运行程序,观察效果
2 -> toolTip
2.1 -> 相关 API
API | 说明 |
setToolTip | 设置 toolTip 鼠标悬停在该 widget 上时会有提示说明 |
setToolTipDuring | 设置 toolTip 提示的时间。单位 ms 时间到后 toolTip 自动消失 |
toolTip 只是给用户看的。在代码中一般不需要获取到 toolTip。
2.2 -> 代码示例
设置按钮的 toolTip
1. 在界面上拖放两个按钮。objectName 设置为 pushButton_yes 和 pushButton_no
2. 编写 widget.cpp
#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);// 设置两个按钮的ToolTipui->pushButton_yes->setToolTip("有惊喜");ui->pushButton_yes->setToolTipDuration(5000);ui->pushButton_no->setToolTip("没有惊喜");ui->pushButton_no->setToolTipDuration(2000);
}Widget::~Widget()
{delete ui;
}
3. 运行程序,观察效果
可以看到鼠标停到按钮上之后,就能弹出提示,时间到后自行消失。
3 -> focusPolicy
设置控件获取到焦点的策略。比如某个控件能否用鼠标选中或者能否通过 tab 键选中。
所谓 “焦点”,指的就是能选中这个元素。对于 输入框,单选框,复选框等控件非常有用。
3.1 -> 相关 API
API | 说明 |
focusPolicy() | 获取该 widget 的 focusPolicy,返回 Qt::FocusPolicy |
setFocusPolicy(Qt::FocusPolicy policy) | 设置 widget 的 focusPolicy |
Qt::FocusPolicy 是一个枚举类型。取值如下
- Qt::NoFocus:控件不会接收键盘焦点
- Qt::TabFocus:控件可以通过 Tab 键接收焦点
- Qt::ClickFocus:控件在鼠标点击时接收焦点
- Qt::StrongFocus:控件可以通过 Tab 键和鼠标点击接收焦点(默认值)
- Qt::WheelFocus:类似于 Qt::StrongFocus,同时控件也通过鼠标滚轮获取到焦点(新增的选项)
3.2 -> 代码示例
理解不同的 focusPolicy
1. 在界面上创建四个单行输入框(Line Edit)
2. 修改四个输入框的 focusPolicy 属性为 Qt::StrongFocus(默认值,一般不用额外修改)
运行程序,可以看到,使用鼠标单击/Tab,就可以移动光标所在的输入框。从而接下来的输入就是针对这个获取焦点的输入框展开的了。
3. 修改第二个输入框的 focusPolicy 为 Qt:: NoFocus,则第二个输入框不会被 Tab/鼠标左键选中。
此时这个输入框也就无法输入内容了。
4. 修改第三个输入框 focusPolicy 为 Qt::TabFocus,则只能通过 Tab 选中,无法通过鼠标选中。
5. 修改第四个输入框 focusPolicy 为 Qt::ClickFocus,则只能通过 Tab 选中,无法通过鼠标选中。
感谢各位大佬支持!!!
互三啦!!!