【QT-百日筑基篇】修真世界摸爬滚打多年,终于黄天不负有心人,突破炼器中期——常用控件QWight的属性

于此止?: 个人主页

本文选自专栏《QT百日筑基篇

❄️ 个人专栏传送门:《Linux篇》 《算法篇》 《Linux网络

C++与STL剖析篇》 《数据结构篇》 《Python基础篇》 《嵌入式砺剑录

⭐️纵有狂风拔地起,我亦乘风破万里⭐️

常用控件的使用


目录/索引

目录

常用控件的使用

目录/索引

一、空间的概述

[二、QWidget 核心属性](#二、QWidget 核心属性)

三、控件的介绍

enabled:设置控件是否可用。true表示可用,false表示禁用。

geometry:设置我们控件的尺寸和位置。

windowTitle:设置窗口标题

windowIcon:设置窗口的图标

绝对路径的方式

使用qrc机制

windowopacity:设置窗口的透明度

cursor:改变鼠标的样式

库函数的更改

自定义qrc修改

font:设置我们的字体的大小

toolTip:设置我们对应的位置的信息

focusPolicy:设置我们的焦点的触发条件

[styleSheet:通过 CSS 设置 widget 的样式.](#styleSheet:通过 CSS 设置 widget 的样式.)

QWidget小结


一、空间的概述

Widget 是 Qt 中的核心概念。英文原义是 "小部件", 我们此处也把它翻译为 "控件". 控件是构成一个图形化界面的基本要素。像上述示例中的,按钮,列表视图,树形视图,单行输入框,多行输入框,滚动条,下拉框等,都可以称为 "控件". Qt 作为一个成熟的 GUI 开发框架,内置了大量的常用控件。这一点在 QtDesigner 中就可以看到端倪。并且 Qt 也提供了 "自定义控件" 的能力,可以让程序员在现有控件不能满足需求的时候,对现有控件做出扩展,或者手搓出新的控件.

下图是我们QT内部设置的一些空间。

二、QWidget 核心属性

在 Qt 中,使用 QWidget 类表示 "控件". 像按钮,视图,输入框,滚动条等具体的控件类,都是继承自 QWidget.

可以说,QWidget 中就包含了 Qt 整个控件体系中,通用的部分.

在 Qt Designer 中,随便拖一个控件过来,选中该控件,即可在右下方看到 QWidget 中的属性

这些属性既可以通过 QtDesigner 会直接修改,也可以通过代码的方式修改.

这些属性的具体含义,在 Qt Assistant 中均有详细介绍.

在 Qt Assistant 中搜索 QWidget,即可找到对应的文档说明.(或者在 Qt Creator 代码中,选中 QWidget,按 F1 也可).

小修正:原文 "QtDesigner 会直接修改" 笔误,标准表述应为:这些属性既可以通过 QtDesigner 直接修改,也可以通过代码的方式修改.

如果你需要完全和图片一字不差(保留原文笔误)版本:

plaintext

复制代码
这些属性既可以通过 QtDesigner 会直接修改,也可以通过代码的方式修改.
这些属性的具体含义,在 Qt Assistant 中均有详细介绍.
在 Qt Assistant 中搜索 QWidget,即可找到对应的文档说明.(或者在 Qt Creator 代码中,选中QWidget,按 F1 也可).

三、控件的介绍

enabled:设置控件是否可用。true表示可用,false表示禁用。

API 说明
isEnabled() 获取到控件的可用状态.
setEnabled 设置控件是否可使用. true 表示可用,false 表示禁用.
  • 所谓 "禁用" 指的是该控件不能接收任何用户的输入事件,并且外观上往往是灰色的.
  • 如果一个 widget 被禁用,则该 widget 的子元素也被禁用.

我们发现我们设置之后我们的按钮,就按不了了。

cpp 复制代码
    QPushButton* pu = new QPushButton(this);
    pu->setText("关闭小窗");
    pu->move(200,200);
    connect(pu,&QPushButton::clicked,this, [this](){this->close();});
    pu->setEnabled(false);

当我们设置位true我们的空间就能继续的使用了

那我们isEnabled呢?我们发现我们使用QpushButton打印出来我们对应控件的内容发现是我们的true表示我们的控件是可用状态。

geometry:设置我们控件的尺寸和位置。

我们这个常用的属性的统称:

x:横坐标

y:纵坐标

widgth:宽度

height:高度

头文件的包含:

cpp 复制代码
#include <QRect>
API 说明
geometry() 获取到控件的位置和尺寸。返回结果是一个 QRect, 包含了 x, y, width, height. 其中 x, y 是左上角的坐标.
setGeometry(QRect) setGeometry(int x, int y,int width, int height) 设置控件的位置和尺寸。可以直接设置一个 QRect, 也可以分四个属性单独设置.

我们这里可以通过这样的方式让我们的label进行移动,这个和move的作用是相似的但是我们的geometry更智能一点。

我们也可以进行改变我们的height与我们的wight

我们这样就能移动我们的屏幕了。

cpp 复制代码
void Widget::on_pushButton_up_clicked()
{
    QRect rect = ui->label->geometry();
    rect.setY(rect.y()-5);
    ui->label->setGeometry(rect);
}

void Widget::on_pushButton_lower_clicked(bool)
{
    QRect rect = ui->label->geometry();
    rect.setY(rect.y()+5);
    ui->label->setGeometry(rect);
}

void Widget::on_pushButton_left_clicked(bool)
{
    QRect rect = ui->label->geometry();
    rect.setX(rect.x()-5);
    ui->label->setGeometry(rect);
}

void Widget::on_pushButton_right_clicked(bool)
{
    QRect rect = ui->label->geometry();
    rect.setX(rect.x()+5);
    ui->label->setGeometry(rect);
}

void Widget::on_pushButton_wide_clicked(bool)
{
    QRect rect = ui->label->geometry();
    rect.setWidth(rect.width()+5);
    ui->label->setGeometry(rect);
}

void Widget::on_pushButton_narrow_clicked()
{
    QRect rect = ui->label->geometry();
    rect.setWidth(rect.width()-5);
    ui->label->setGeometry(rect);
}

void Widget::on_pushButton_height_clicked()
{
    QRect rect = ui->label->geometry();
    rect.setHeight(rect.height()+5);
    ui->label->setGeometry(rect);
}

void Widget::on_pushButton_short_clicked()
{
    QRect rect = ui->label->geometry();
    rect.setHeight(rect.height()-5);
    ui->label->setGeometry(rect);
}

windowTitle:设置窗口标题

我们的这个我们windowsTitle是我们QWidget内部实现的我们直接进行使用就可以了。

API 说明
windowTitle() 获取到控件的窗口标题.
setWindowTitle(const QString& title) 设置控件的窗口标题.

我们设置以下看看。

我们来获取以下我们的标题

windowIcon:设置窗口的图标

绝对路径的方式

API 说明
windowIcon() 获取到控件的窗口图标。返回 QIcon 对象.
setWindowIcon(const QIcon& icon) 设置控件的窗口图标.

我们设置一个我们下面的小猫老弟吧。

cpp 复制代码
#include <QIcon> //头文件    
QIcon icon("d:/图片/橘猫.png");
setWindowIcon(icon);

实际开发中,我们一般不会在代码中通过绝对路径引入图片。因为我们无法保证程序发布后,用户的电脑上也有同样的路径.

如果使用相对路径,则需要确保代码中的相对路径写法和图片实际所在的路径匹配 (比如代码中写作 "./image/rose.jpg", 就需要在当前工作目录中创建 image 目录,并把 rose.jpg 放进去).

使用qrc机制

首先我们要在qt中进行导入我们对应的qrc机制

我们新建文件。

这里选择qt,然后选择我们的qt resource file,点击我们的close。

输入名称即可。

我们点击,

前缀我们设置为一个/即可

我们发现我们的addfile可以点击了我们点击一下

会跳到我们对应的这个当前目录下,我们将我们想要添加的图片复制添加。

添加完我们就会出现这个弹窗,我们打开即可。

我们就发现我们的图片出现在这里了

我们设置图片

我这里刚才多点了一下所以我们刚才没有设置为"/"

都一样的我们qrc的模板遵循

cpp 复制代码
QIcon con(":/前缀/图片名")

我们在这个文件会有对应的图片的ecpp文件我们打开一下

我们发现都是二进制,这表示我们这张推片的二进制已经加载进来了。

windowopacity:设置窗口的透明度

opacity(不透明;不传导;暧昧)。

API 说明
windowOpacity() 获取到控件的不透明数值。返回 float,取值为 0.0 -> 1.0,其中 0.0 表示全透明,1.0 表示完全不透明。
setWindowOpacity(float n) 设置控件的不透明数值。

我们在设置之前先获取一下我们的透明度

当前是1那我们设置为0,就完全透明数了我们也可以设置两个按钮来加减透明度,这里不做演示了。

cursor:改变鼠标的样式

库函数的更改

我们这里样式使用qrc机制进行

cursor:光标

API 说明
cursor() 获取到当前 widget 的 cursor 属性,返回 QCursor 对象。当鼠标悬停在该 widget 上时,就会显示出对应的形状。
setCursor(const QCursor& cursor) 设置该 widget 光标的形状。仅在鼠标停留在该 widget 上时生效。
QGuiApplication::setOverrideCursor(const QCursor& cursor) 设置全局光标的形状。对整个程序中的所有 widget 都会生效。覆盖上面的 setCursor 设置的内容。

我们在使用我们的箭头的时候能看到我们右侧的cursor的属性

我这里他是一个箭头的属性

我们设置一个等待的标签

当然这里我们不好进行观察。

我们在Qt::WaitCursor进行ctrl+左键进入我们内部的定义,我们能看到我们QT内部内置的一些属性。我们

我们下图对应的链接:提取属性并配图 - 豆包https://www.doubao.com/chat/38438166497123330?channel=xiazaishttps://www.doubao.com/chat/38438166497123330?channel=xiazais

自定义qrc修改

我们需要使用qt内置的一些方法

我们大概的流程如下:

这里我们注意我们设置完要设置我们的大小,要不然太大了就有点......

scaled(缩小)。

复制代码
#include <QPixmap>
//创建一个位图对象,加载定义的光标图片
QPixmap pixmap(":/orange_cat.png");//qrc机制
//设置我们的图片的大小,我们这里设置64x64的大小
pixmap= pixmap.scaled(64,64);
//创建我们的Qcursor对象,我们构造QCuesor的第一个参数是一个我们对应的QPixmap对象,我们的第二、     //三个参数是指定我们的热点,我们这设置(2,2)的坐标值
//所谓热点就是我们鼠标点击生效的位置。
QCursor cursor(pixmap,2,2);
setCursor(cursor);

解释一下:Pix(照片)map(图) ,光标图

这样我们运行一下我们的鼠标的光标就能改变但是我们这里看不了,我试了一下我们截图截不到。

我们如果没有图标的话我们可以参考下面的链接进行下载我们对应的图片。

阿里巴巴矢量图标库链接:iconfont-阿里巴巴矢量图标库


font:设置我们的字体的大小

font:字体。

API 说明
font() 获取当前 widget 的字体信息。返回 QFont 对象.
setFont(const QFont& font) 设置当前 widget 的字体信息.

在使用 QFont 相关功能时,我们需要包含对应的头文件。QFont 类是 Qt 中用于处理字体的核心类,它封装了字体的各种属性,如字体家族、大小、粗细、样式等。

cpp 复制代码
#include <QFont>

包含头文件后,我们就可以使用 QFont 类来获取和设置控件的字体信息。获取当前控件的字体信息非常简单,只需要调用控件的 font() 方法即可:

cpp 复制代码
// 获取当前控件的字体信息
QFont currentFont = ui->label->font();
// 或者对于任何 QWidget 派生类
QFont widgetFont = this->font();

获取到 QFont 对象后,我们可以查看字体的各种详细信息。QFont 提供了丰富的方法来查询字体属性:

  • font.family() - 获取字体家族名称(如"微软雅黑"、"宋体"等)
  • font.pointSize() - 获取字体大小(以磅为单位)
  • font.weight() - 获取字体粗细程度(0-99之间的数值)
  • font.bold() - 判断字体是否加粗
  • font.italic() - 判断字体是否倾斜
  • font.underline() - 判断字体是否有下划线
  • font.strikeOut() - 判断字体是否有删除线

在实际开发中,获取字体信息对于以下场景特别有用:

  1. 字体继承检查:了解控件当前使用的字体是否从父控件继承而来
  2. 样式一致性:确保应用程序中不同控件使用相同的字体设置
  3. 动态调整:根据获取的字体信息动态调整其他界面元素
  4. 用户偏好保存:保存用户自定义的字体设置以便下次恢复

下面是一个完整的示例,展示如何获取并显示字体的详细信息:

cpp 复制代码
void Widget::showFontInfo()
{
    // 获取按钮的当前字体
    QFont buttonFont = ui->pushButton->font();
    
    // 构建字体信息字符串
    QString fontInfo;
    fontInfo += "字体家族: " + buttonFont.family() + "\n";
    fontInfo += "字体大小: " + QString::number(buttonFont.pointSize()) + "pt\n";
    fontInfo += "字体粗细: " + QString::number(buttonFont.weight()) + "\n";
    fontInfo += "是否加粗: " + QString(buttonFont.bold() ? "是" : "否") + "\n";
    fontInfo += "是否倾斜: " + QString(buttonFont.italic() ? "是" : "否") + "\n";
    fontInfo += "是否有下划线: " + QString(buttonFont.underline() ? "是" : "否") + "\n";
    fontInfo += "是否有删除线: " + QString(buttonFont.strikeOut() ? "是" : "否") + "\n";
    
    // 显示字体信息
    QMessageBox::information(this, "字体信息", fontInfo);
}

通过这种方式,我们不仅能看到字体的基本信息,还能深入了解 Qt 字体系统的内部工作机制。这对于调试界面样式问题、实现字体相关的自定义功能都非常有帮助。

我们还能设置我们对应的值:

我们也能在我们拖拽我们对应的控件的时候我们进行我们的操作。

我们可以设置字体家族来进行我们直接的修改。当然我们也能通过我们写对应的代码的形式进行我们的修改,编写代码比较的麻烦。

我们要在设置的时候创建我们的Font的变量。

重难点英语词汇解释:

bold:大胆自信的,敢于冒险的;冒失的,鲁莽的;明显的,轮廓突出的;粗体的,黑体的;<文>陡峭的,v黑体粗体

italic:斜体的;仿意大利古书写体的

underline:under下,line线,下划线

strikeOut:失败;加删除线;三击未中出局

属性 说明
family(家庭) 字体家族。比如 "楷体", "宋体", "微软雅黑" 等.
pointSize 字体大小
weight 字体粗细。以数值方式表示粗细程度取值范围为 0,99, 数值越大,越粗.
bold 是否加粗。设置为 true, 相当于 weight 为 75. 设置为 false 相当于 weight 为 50.
italic 是否倾斜
underline 是否带有下划线
strikeOut 是否带有删除线

这里我们分别来进行抽丝剥茧的进行我们对应操作的拆解:

family字体的设置。我们创建这些形如我们的QFont、QPixMap等这种结构创建变量一般是在栈上开辟我们对应的空间。

cpp 复制代码
    QFont font;
    //设置字体家族
    font.setFamily("仿宋");
    //设置字体大小
    font.setPointSize(10);
    //设置字体是否加粗
    font.setBold(true);
    //设置字体是否倾斜
    font.setItalic(false);
    //设置字体是否带有下划线
    font.setUnderline(false);
    //设置字体是否带有删除线
    font.setStrikeOut(true);
    //将我们这些特性设置到我们对应的按钮上
    ui->pushButton->setFont(font);

实际开发中,字体属性如何选择,是一个 "审美问题",而不是 "技术问题"。往往需要有一定的艺术细菌。

幸运的是,公司中往往有专业的 "美工"/"设计" 这样的岗位,去做这方面的工作。咱们程序员只要按照人家给的设计稿,把代码写出来即可。不必过多考虑怎样搭配才好看的问题。


toolTip:设置我们对应的位置的信息

tip:透露消息

tool:工具

cpp 复制代码
 ui->pushButton_Yes->setToolTip("这是一个Yes按钮");
 ui->pushButton_Yes->setToolTipDuration(10000);
 ui->pushButton_No->setToolTip("这是一个No按钮");
 ui->pushButton_No->setToolTipDuration(10000);
API 说明
setToolTip 设置 toolTip。鼠标悬停在该 widget 上时会有提示说明。
setToolTipDuring 设置 toolTip 提示的时间。单位 ms。时间到后 toolTip 自动消失。

我们这里创建2个按钮一个是yes一个是no停在那里就显示什么信息。

我们如果不设置时间这个解释就不会进行消失。


focusPolicy:设置我们的焦点的触发条件

focus:集中重点

Policy:政策,方针;(处事) 原则,策略;保险单

API 说明
focusPolicy() 获取该 widget 的 focusPolicy,返回 Qt::FocusPolicy
setFocusPolicy(Qt::FocusPolicy policy) 设置 widget 的 focusPolicy.

理解焦点:

我们在我们的浏览器的进入页面有一个输入框,我们点击后看到"|"就能输入对应的文字,我们为什么能从不能输入------>能输入呢?因为我们再点击的时候就触发了我们对应的焦点。我们就能输入我们对应的文字了。

这里我们的setFocusPolicy(Qt::FocusPolicy policy)的参数一下的集中方式进行选择

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

  • Qt::NoFocus:控件不会接收键盘焦点
  • Qt::TabFocus:控件可以通过 Tab 键接收焦点
  • Qt::ClickFocus:控件在鼠标点击时接收焦点
  • Qt::StrongFocus:控件可以通过 Tab 键和鼠标点击接收焦点 (默认值)
  • Qt::WheelFocus:类似于 Qt::StrongFocus,同时控件也通过鼠标滚轮获取到焦点 (新增的选项,一般很少使用),也可以在点击和我们的Tab来获取焦点.

wheel:轮子,车轮;汽车(wheels);机轮,齿轮,传动轮;(汽车、轮船等的)方向盘,转向盘;系统,机构;轮状物;轮盘(一种旋转的赌具);轮;重要人物,大亨;轮式机械(或器具);旋转,回旋;(诗歌等的)叠句;<史>(用于牵拉或分裂肢体的)轮式刑车(the wheel)

我们在使用的时候想到了我们之前的控件LineEdit(单行输入框这里我们拿它来进行操作)

cpp 复制代码
    ui->lineEdit_Click->setFocusPolicy(Qt::ClickFocus);
    ui->lineEdit_No->setFocusPolicy(Qt::NoFocus);
    ui->lineEdit_Strong->setFocusPolicy(Qt::StrongFocus);
    ui->lineEdit_Wheel->setFocusPolicy(Qt::WheelFocus);
    ui->lineEdit_Tab->setFocusPolicy(Qt::TabFocus);

当然这里的一些操作不好展示我们就不过多的进行展示了。

当然我们也能直接拖拽的时候进行我们的修改。

当然我们多说一点,我们在力扣模拟面试的时候我们的,我们的防作弊的行为也有一点我们对应的焦点的情况,我们如果焦点过低可能检测我们当前有一些行为不好,我们这也是通过我们对应的焦点来进行实现的。


styleSheet:通过 CSS 设置 widget 的样式.

style:方式设计

sheet:床单,被单;我们这翻译为样式表

注意:

复制代码
background-color:是设置背景的颜色的

color:设置字体的颜色的。

🎨 CSS (Cascading Style Sheets 层叠样式表) 本身属于网页前端技术。主要就是用来描述界面的样式. 所谓 "样式", 包括不限于 大小,位置,颜色,间距,字体,背景,边框等. 我们平时看到的丰富多彩的网页,就都会用到大量的 CSS.

Qt 虽然是做 GUI 开发,但实际上和 网页前端 有很多异曲同工之处。因此 Qt 也引入了对于 CSS 的支持.

我们的CSS又叫做层叠样式表,网页开发会设置对应的样式表。

CSS 中可以设置的样式属性非常多。基于这些属性 Qt 只能支持其中一部分,称为 QSS (Qt Style Sheet). 具体的支持情况可以参考 Qt 文档中 "Qt Style Sheets Reference" 章节. 此处只是进行一个简单的演示.

我们可以打开专门的编辑表

我们在下面找到我们的stleSheet找到右侧的三个点...点击就出了。

我们右键有个改变样式表,也能进入

我们一般这么编写

键值对,我们键和值之间采用:进行分割,我们的键值对和键值对之间使用;进行分割。

我们这模拟实现日间模式和夜间模式

我们初始的屏幕的样式:

夜间:

日间:

cpp 复制代码
void Widget::on_pushButton_light_clicked()
{
    setStyleSheet("background-color: white");
    ui->screen->setStyleSheet("background-color:white");

    ui->pushButton_light->setStyleSheet("background-color:white");
    ui->pushButton_dask->setStyleSheet("background-color:white");
}

void Widget::on_pushButton_dask_clicked()
{
    setStyleSheet("background-color: black");
    ui->screen->setStyleSheet("background-color:white");
    ui->pushButton_light->setStyleSheet("background-color:white");
    ui->pushButton_dask->setStyleSheet("background-color:white");
}

我们的代码有两种情况可以进行选择:

1.background-color:颜色

2.rgb(read,green,blue);

我们在计算机中通常使用1个字节来表示我们对应的颜色所占的大小也就是我们的0-255/0x00-0xff

我们可以使用.rgb(read,green,blue);这个方式进行填写我们对应的颜色的情况。

3.我们还能写#FF00FF等价于rgb(255,0,255)

都等价

cpp 复制代码
void Widget::on_pushButton_light_clicked()
{
    setStyleSheet("background-color: rgb(255,255,255)");
    ui->screen->setStyleSheet("background-color:rgb(255,255,255)");

    ui->pushButton_light->setStyleSheet("background-color:rgb(255,255,255)");
    ui->pushButton_dask->setStyleSheet("background-color:rgb(255,255,255)");
}

void Widget::on_pushButton_dask_clicked()
{
    setStyleSheet("background-color: rgb(000,000,000)");
    ui->screen->setStyleSheet("background-color:#ffffff");
    ui->pushButton_light->setStyleSheet("background-color:#ffffff");
    ui->pushButton_dask->setStyleSheet("background-color:#ffffff");
}
cpp 复制代码
void Widget::on_pushButton_light_clicked()
{
    setStyleSheet("background-color: #ffffff");
    ui->screen->setStyleSheet("background-color:#ffffff");

    ui->pushButton_light->setStyleSheet("background-color:#ffffff");
    ui->pushButton_dask->setStyleSheet("background-color:#ffffff");
}

void Widget::on_pushButton_dask_clicked()
{
    setStyleSheet("background-color: #000000");
    ui->screen->setStyleSheet("background-color:#ffffff");
    ui->pushButton_light->setStyleSheet("background-color:#ffffff");
    ui->pushButton_dask->setStyleSheet("background-color:#ffffff");
}

rgb(255,0,255):表示我红色拉满,绿色没有,我蓝色拉满。

当然我们要更好的表示我们对应的颜色我们最好是配有对应的取色器。

我们对应的微信截图功能就有对应的取色器,我们首先登上我们的微信我们使用【alt】+a截图

这就代表我们的中心区域的色值是多少,以后我们看见好看的颜色可以采用这种方法。

  • #333:是深色,但是没那么黑。
  • #fff:是纯白色。
  • #000:是纯黑色。

我们对应颜色参照链接:在线调色板,调色板工具---在线工具

计算机中使用 "像素" 表示屏幕上的一个基本单位 (也就是一个发亮的光点).

每个光点都使用三个字节表示颜色,分别是 R (red), G (green), B (blue) 一个字节表示 (取值范围是 0‑255, 或者 0x00‑0xFF).

混合三种不同颜色的数值比例,就能搭配出千千万万的颜色出来.

  • rgb(255, 0, 0) 或者 #FF0000 或者 #F00 表示纯红色.
  • rgb(0, 255, 0) 或者 #00FF00 或者 #0F0 表示纯绿色.
  • rgb(0, 0, 255) 或者 #0000FF 或者 #00F 表示纯蓝色.
  • rgb(255, 255, 255) 或者 #FFFFFF 或者 #FFF 表示纯白色.
  • rgb(0, 0, 0) 或者 #000000 或者 #000 表示纯黑色.

当然,上述规则只是针对一般的程序而言是这么设定的。实际的显示器,可能有 8bit 色深或者 10bit 色深等,实际情况会更加复杂.

QWidget小结

前面我们已经学了我们经常使用的一些我们的QWidget的控件,那么我们下面给出所有的QT中有关qwidget的属性

属性 作用
enabled 设置控件是否可使用,true 表示可用,false 表示禁用。
geometry 位置和尺寸,包含 x, y, width, height 四个部分。其中坐标是以父元素为参考进行设置的。
windowTitle 设置 widget 标题
windowIcon 设置 widget 图标
windowOpacity 设置 widget 透明度
cursor 鼠标悬停时显示的图标形状。是普通箭头,还是沙漏,还是十字等形状。在 Qt Designer 界面中可以清楚看到可选项。
font 字体相关属性。涉及到字体家族,字体大小,粗体,斜体,下划线等等样式。
toolTip 鼠标悬停在 widget 上会在状态栏中显示的提示信息。
toolTipDuring toolTip 显示的持续时间。
statusTip Widget 状态发生改变时显示的提示信息 (比如按钮被按下等)。
whatsThis 鼠标悬停并按下 alt+F1 时,显示的帮助信息 (显示在一个弹出的窗口中)。
styleSheet 允许使用 CSS 来设置 widget 中的样式。Qt 中支持的样式非常丰富,对于前端开发人员上手是非常友好的。
focusPolicy 该 widget 如何获取到焦点。- Qt::NoFocus:控件不参与焦点管理,即无法通过键盘或鼠标获取焦点- Qt::TabFocus:控件可以通过 Tab 键获得焦点- Qt::ClickFocus:控件可以通过鼠标点击获得焦点- Qt::StrongFocus:控件可以通过键盘和鼠标获得焦点- Qt::WheelFocus:控件可以通过鼠标滚轮获得焦点(在某些平台或样式中可能不可用)
contextMenuPolicy 上下文菜单的显示策略。- Qt::DefaultContextMenu:默认的上下文菜单策略,用户可以通过鼠标右键或键盘快捷键触发上下文菜单- Qt::NoContextMenu:禁用上下文菜单,即使用户点击鼠标右键也不会显示菜单- Qt::PreventContextMenu:防止控件显示上下文菜单,即使用户点击鼠标右键也不会显示菜单- Qt::ActionsContextMenu:将上下文菜单替换为控件的 "动作" 菜单,用户可以通过鼠标右键或键盘快捷键触发这个菜单- Qt::CustomContextMenu:使用自定义的上下文菜单,用户可以通过鼠标右键或键盘快捷键触发这个菜单
locale 设置语言和国家地区。
acceptDrops 该部件是否接受拖放操作。如果设置为 true,那么该部件就可以接收来自其他部件的拖放操作。当一个部件被拖放到该部件上时,该部件会接收到相应的拖放事件(如 dropEvent)。如果设置为 false,那么该部件将不会接收任何拖放操作。
minimumSize 控件的最小尺寸,包含最小宽度和最小高度。
maximumSize 控件的最大尺寸,包含最大宽度和最大高度。
sizePolicy 尺寸策略,设置控件在布局管理器中的缩放方式。
windowModality 指定窗口是否具有 "模态" 行为。
sizeIncrement 拖动窗口大小时的增量单位。
baseSize 窗口的基础大小,用来搭配 sizeIncrement 调整组件尺寸是计算组件应该调整到的合适的值。
palette 调色板,可以设置 widget 的颜色风格。
mouseTracking 是否要跟踪鼠标移动事件。如果设为 true,表示需要跟踪,则鼠标划过的时候该 widget 就能持续收到鼠标移动事件。如果设为 false,表示不需要跟踪,则鼠标划过的时候 widget 不会收到鼠标移动事件,只能收到鼠标按下或者释放的事件。
tabletTracking 是否跟踪触摸屏的移动事件。类似于 mouseTracking。Qt5.9 中引入的新属性。
layoutDirection 布局方向。- Qt::LeftToRight:文本从左到右排列,也是默认值。- Qt::RightToLeft:文本从右到左排列。- Qt::GlobalAtomics:部件的布局方向由全局原子性决定 (PS 这个翻译其实有点尴尬,其实就是根据应用程序中的其他 widget 布局方向确定的)。
autoFillBackground 是否自动填充背景颜色。
windowFilePath 能够把 widget 和一个本地文件路径关联起来。PS: 其实作用不大。
accessibleName 设置 widget 的可访问名称。这个名称可以被辅助技术 (像屏幕阅读器) 获取到。这个属性用于实现无障碍程序的场景中 (也就是给盲人写的程序)。PS: 其实盲人也是可以使用电脑和手机的,甚至盲人还能成为程序员。参见 https://www.bilibili.com/video/BV1954y1d7z9
accessibleDescription 设置 widget 的详细描述,作用同 accessibleName
inputMethodHints 针对输入框有效,用来提示用户当前能输入的合法数据的格式,比如只能输入数字,只能输入日期等。

重点提一下:

accessibleName:是我们的屏幕阅读器。

相关推荐
Littlehero_1212 小时前
QT自定义控件之热换站系统(源码开源)
开发语言·qt
meilindehuzi_a2 小时前
Python 基础语法(1):常量、变量、类型、输入输出与运算符
开发语言·python
caimouse3 小时前
ReactOS 窗口系统分析(5):可见区域与窗口 DC — vis.c + windc.c
c语言·开发语言
OPEN-F3 小时前
Python进阶教程:装饰器与生成器深入
开发语言·python
千里码aicood4 小时前
基于Python的电商数据采集系统(大数据+爬虫)
开发语言·python
_Narcissus_4 小时前
动态规划初探(含完整代码实现)
c语言·数据结构·c++·算法·动态规划·背包问题·最短路径
福大大架构师每日一题4 小时前
ragflow v0.27.0 发布:Go 后端全面对齐、智能体搜索与知识编译大升级,超全更新解析
开发语言·后端·golang
陈皮波比茶4 小时前
Python项目实战-网络机器人(爬虫)
开发语言·网络·爬虫·python·机器人
法哥20125 小时前
用 C++ 控制 CMW100,到底在干什么?
开发语言·c++