QT常用属性篇(2)

一、enable

1介绍和要点

介绍:

"enable"相关的功能主要用于 控制界面元素(如窗口、控件、菜单动作等)的交互状态**。它的核心是 enabled 属性,通过**启用或禁用**来管理用户能否与这些元素进行交互。

要点:

  • 父子控件的联动陷阱 :当父控件被禁用(setEnabled(false))时,所有子控件会自动全部禁用。但父控件重新启用时,不会自动恢复那些被单独调用过的子控件(需单独重新启用)。

  • 区分"禁用"与"隐藏"setEnabled(false) 只是让控件变灰且不可交互,仍占据布局空间 ;如需完全隐藏且不占位,应使用 setVisible(false)hide()

2.属性

3.代码

cpp 复制代码
    ui->pushButton1->setEnabled(false);
    ui->pushButton2->setEnabled(true);//默认为true

二、geometry

1.介绍和要点

介绍:

"geometry"相关的功能主要用于 控制界面元素(如窗口、控件等)的位置和尺寸**。它的核心是** 一个包含x(横坐标)、y(纵坐标)、width(宽度)和height(高度)的矩形区域,通过设置或获取这些值来管理元素在界面中的布局。

要点:

  • geometryframeGeometry的区别 :对于顶层窗口 (如QMainWindow),geometry()返回的是不包含 窗口边框和标题栏的客户区矩形;而frameGeometry()返回的是包含 整个窗口框架的矩形。对于普通的子控件,两者没有区别。

  • 获取窗口几何信息的时机 :在窗口的构造函数 中调用geometry()frameGeometry(),得到的值可能是不准确的。这是因为窗口此时尚未完全创建和显示,其框架信息还未确定。应在show()事件之后获取,以确保值可靠。

  • 与布局管理器的冲突 :如果父控件使用了布局管理器 (如QHBoxLayout),子控件的geometry属性可能会被布局管理器控制而无法手动设置 。此时,手动调用setGeometry()可能无效。

  • 最小/最大尺寸的限制 :通过setGeometry()设置的尺寸会受到控件minimumSizemaximumSize属性的限制。如果设置的尺寸超出范围,控件会自动调整到允许的尺寸范围内。

2.属性

QRect了解

cpp 复制代码
#include <QRect>

QRect(int x, int y, int width, int height);

// 功能:
// 构造一个矩形,指定左上角坐标和宽度、高度

// 参数说明:
// int x:
// 左上角的 x 坐标

// int y:
// 左上角的 y 坐标

// int width:
// 矩形的宽度(若为负则自动调为0)

// int height:
// 矩形的高度(若为负则自动调为0)

// 返回值:
// 无(void)

3.代码

cpp 复制代码
    //一号位向右和下移动10像素
    int x1 = ui->pushButton1->geometry().x();//获取x的坐标
    int y1 = ui->pushButton1->geometry().y();//获取y的坐标

    ui->pushButton1->setGeometry(x1+10,y1+10,ui->pushButton1->width(),ui->pushButton1->height());


    //二号位向左和上移动40像素
    int x2 = ui->pushButton2->geometry().x();//获取x的坐标
    int y2 = ui->pushButton2->geometry().y();//获取y的坐标

    ui->pushButton2->setGeometry(x1-40,y1-40,ui->pushButton2->width(),ui->pushButton2->height());

三、window frame

1.介绍

window frame 指的是 window 自带的边框 ,这会导致有的窗口会带有该边框,而有的则不会;并且一定要等窗口加载出来,这个边框才会有高度和宽度。

2. 属性

四、windowTitle

1.介绍和要点

介绍:

"windowTitle"相关的功能主要用于 设置顶层窗口标题栏中显示的文本**。
要点:**

  • 仅作用于顶层窗口 :该属性仅对设置了窗口标志(如 Qt::Window)的 QWidget(包括 QMainWindowQDialog 等)生效。普通子控件(如嵌入的 QPushButton)设置此属性无效。

2. 属性

3.代码

cpp 复制代码
    setWindowTitle("高分少女");

五、windowIcon

1.介绍和要点

"windowIcon"相关的功能主要用于 设置顶层窗口标题栏、任务栏以及任务切换器中显示的图标**。**

2.属性

QIcon了解

cpp 复制代码
#include <QIcon>

QIcon(const QString &fileName);

// 功能:
// 从指定的图像文件加载图标,支持多种格式(PNG、JPEG、BMP等)
// 若文件不存在或格式无效,则创建一个空图标

// 参数说明:
// const QString &fileName:
// 图像文件的路径(可以是资源文件或本地文件)

qrc了解

  • 路径无关性 :无论是绝对路径 还是相对路径 ,都无法保证客户端有同样的文件结构 ,而qrc机制 将资源编译进可执行文件 ,彻底解决路径依赖问题

  • 内存加载qrc将资源转换为C++代码 (二进制数据),程序运行时直接从内存加载 ,无需读取外部文件

3.代码

cpp 复制代码
    setWindowIcon(QIcon(":/ege.png"));

六、windowOpacity

1.介绍和要点

介绍:

"windowOpacity"相关的功能主要用于 控制顶层窗口的整体透明度**。
要点:**

  • 仅顶层窗口生效 :该属性仅对设置了窗口标志(如 Qt::Window)的 QWidget 生效。普通子控件设置无效。

  • 整体透明度:设置的值会影响整个窗口,包括其所有子控件。

  • 增量趋近0.1 :每次调整透明度时,增加或减少的值趋近于0.1,而非精确等于0.1

  • 浮点数精度问题 :由于计算机浮点数表示的局限性 ,会出现精度不准确 的情况,例如0.1 + 0.2 ≠ 0.3

2.属性

3.代码

cpp 复制代码
    setWindowOpacity(0.5);

    setWindowOpacity(1);

七、cursor

1.介绍和要点

介绍:

"cursor"相关的功能主要用于 控制鼠标悬停在界面元素(如窗口、控件)上时的光标外观**。
要点:**

  • 继承与取消逻辑:子控件默认继承父控件的光标。

2.属性

QCursor了解

cpp 复制代码
#include <QCursor>

QCursor(Qt::CursorShape shape);

// 功能:
// 构造一个光标对象,使用预定义的光标形状

// 参数说明:
// Qt::CursorShape shape:
// 光标形状枚举值,常用值包括:
// - Qt::ArrowCursor:标准箭头
// - Qt::IBeamCursor:文本输入(I形)
// - Qt::WaitCursor:等待(沙漏或旋转)
// - Qt::CrossCursor:十字准星
// - Qt::PointingHandCursor:手形(链接)
// - Qt::ClosedHandCursor:闭合手形
// - Qt::ForbiddenCursor:禁止标志
// - Qt::SizeAllCursor:四向箭头

// 返回值:
// 无(void)

3.代码

cpp 复制代码
   ui->pushButton->setCursor(QCursor(Qt::CrossCursor));//十字准星

八、font

1.介绍和要点

介绍:

"font"相关的功能主要用于 控制界面元素(如窗口、标签、按钮等)中显示文本的字体样式**。**

要点:

  • 继承特性:子控件默认继承父控件的字体设置。

2.属性

QFont的属性

3.代码

cpp 复制代码
    QFont font;
    font.setFamily("楷体");//字体
    font.setPointSize(10);//大小
    font.setItalic(true);//是否斜体
    font.setUnderline(true);//是否有下划线

    ui->pushButton->setFont(font);

九、focusPolicy

1.介绍和要点

介绍:

"focusPolicy"相关的功能主要用于 控制界面元素(如窗口、控件)如何通过键盘(Tab键)或鼠标点击来获得输入焦点。

要点:

所谓"焦点",指的是当前被激活、可接收用户输入的界面元素。

  • 一旦某个控件获得焦点 ,后续的键盘操作(如输入、方向键、回车等)都会直接作用于该控件

  • 常见支持焦点的控件包括:输入框(QLineEdit)、单选框(QRadioButton)、复选框(QCheckBox)、按钮(QPushButton)等

2.属性

Qt::FocusPolicy类型

重点:NoFocus是拒绝接受焦点,不是拒绝接受键盘焦点。

3.代码

cpp 复制代码
    ui->lineEdit->setFocusPolicy(Qt::ClickFocus);//拒绝接受键盘焦点

    ui->lineEdit_2->setFocusPolicy(Qt::StrongFocus);//默认是键盘鼠标焦点
    ui->lineEdit_3->setFocusPolicy(Qt::StrongFocus);//默认是键盘鼠标焦点

十、styleSheet

1.介绍和要点

介绍:
"styleSheet"相关的功能主要用于
通过CSS(层叠样式表)语法自定义界面元素(如窗口、控件)的外观样式**。
要点:**

  • 作用范围与继承 :样式表具有继承性
  • 采取键值对的方式:键和值采用 : 分隔,键值对采用 ; 分隔。