QT常用控件1.0,enabled() geometry() QIcon的.qrc文件导入

@bit::Shadow
✧(≖ ◡ ≖✿

目录

enabled

geometry几何

[windows frame窗口边框](#windows frame窗口边框)

注意点:

构造函数

控件相对位置

综合使用演示:

QIcon控件图标

.qrc寻路机制

创建流程

QT文件创建

图片创建导入

图片拷贝

文件索引常见问题

报错:

改正:

代码链接

🔗演示视频:

Qt奇妙的报错机制


enabled

描述控件是否处于可用状态(非灰色)

|--------------------|-------------|
| enabled | 作用 |
| bool b isEnabled() | 返回控件是否是可用状态 |
| setTnabled(bool b) | 设置控件状态 |

geometry几何

QRect对象描述控件的位置和大小,在栈上创建即可,区别于QPushButton需要链接到对象树上。QRect对象是一个普通的轻量的数据结构不属于QObject对象,因此不能链接也无需链接到对象树上。

QRect对象设置控件位置(x, y)和大小(width height)

|------------------------------------------------------|-------------------------------------------------------------------------|
| geometry | 作用 |
| QRect geometry() | 返回QRect对象,获取控件坐标(x,y)+长度高度(width,height) |
| setGeometry(QRect) | 启用对控件的属性更改,像:rect.setY(rect.y()-5);ui->pushButton->setGeometry(rect); |
| setGeometry(int x, int y, int width, int height) | 分别设置控件属性 |

windows frame窗口边框

一般操作区的外边界区

相应的使用frameGeometry系列控制。

注意点:

构造函数

windows frame若位于Widget的构造函数中则不会起作用!

因为:定义在构造函数中无法及时同步。

控件相对位置

我们在设置控件时要注意其相对于谁,是frame还是非frame。

综合使用演示:

cpp 复制代码
void Widget::Button1()
{
    QPushButton* Window_FrameButton = new QPushButton(this);
    Window_FrameButton->setText(R"(\frame_Show)");
    Window_FrameButton->setEnabled(false);
//    Window_FrameButton->move(100,50);
    Window_FrameButton->setGeometry(100,50,150,80);
}

运行结果:

QIcon控件图标

QIcon是基于本地图片(仅静态)设置图标的类。首选精品免费网站:阿里巴巴图片矢量库

同geometry的QRect对象栈上创建就可以。

|-----------------------------------|------------------|
| QIcon | 作用 |
| QIcon windowIcon() | 返回控件的窗口图标QIcon对象 |
| setWindowIcon(const QIcon& icon) | 设置控件的窗口图标 |

QIcon对象使用文件路径的查找模式在文件内查找。

如:

cpp 复制代码
QIcon qicon(R"(D:\devenv.exe\DriveC\)");//使用绝对路径/相对路径均可以

但是这样链接存在一种问题:

程序协作开发要传递给别人,当传递后如果对方路径下无此文件等等类似错误就会导致图片挂掉,加载失败。因此诞生了.qrc机制:

.qrc寻路机制

程序开发后共享时为避免图片路径的错误、丢失等问题,QT内采用一种模拟图片路径的方法,使得图片:.jpg/.png图片--->.qrc文件-->.cpp文件--->.exe文件,有效地解决了图片丢失的问题。

创建流程

QT文件创建

图片创建导入

导入的Qt内的虚拟路径

第二张图都建议修改为"/"------方便后续的路径索引

图片拷贝

图片必须拷贝到点击"Add Files"后的跳转目录下(一级及多级目录)

文件索引常见问题

1.图片名不含中文。

2.文件路径未正确拷贝。

报错:
改正:

修改名字为CSDNAvatar.png后,拷贝到指定目录。

代码链接

点击按钮后图片更改:

cpp 复制代码
//Widget.cpp
void Widget::on_pushButton_Avatar_clicked()
{
    //QIcon originalIcon = this->windowIcon();

    QIcon newIcon(":/new/prefix1/CSDNAvatar.png");
    this->setWindowIcon(newIcon);
}

🔗演示视频:

点击按钮后修改Wigdet图标.mp4

Widget图标按钮点击更改演示

Qt奇妙的报错机制

1.当予以无标题windowTitle控件设置标题:

cpp 复制代码
pushButton->setWindowTitle("newTitle");

即使该控件无Title运行点击均不会报错!

2.图片路径索引错误

cpp 复制代码
//QIcon newIcon(":/new/prefix1/CSDNAvatar.png");
//                       |
  QIcon newIcon(":/new/prifix1/CSDNAvatar.png");

即使路径错误也不会报错!

感谢支持,持续更新

欢迎关注

相关推荐
郝学胜_神的一滴2 天前
CMake 034:生成器表达式:解耦构建时序、精简分支逻辑的终极利器
c++·cmake
见过夏天3 天前
C++ 基础入门完全指南
c++
用户805533698034 天前
不止三件套:QObject 属性系统全关键字与运行时反射!
c++·qt
xcyxiner4 天前
DicomViewer (vcpkg Windows和ubuntu编译)7
qt
BadBadBad__AK4 天前
线段树维护区间 k 次方和
c++·数学·算法·stl
卷无止境5 天前
Eigen 库如何借助 OpenMP 加速计算
c++·后端
卷无止境5 天前
OpenMPI、MPICH 与 OpenMP:关系、核心概念与架构全解
c++·后端
郝学胜_神的一滴6 天前
CMake 30:循环语法全解|foreach_while双循环精讲、迭代技巧与实战避坑指南
c++·cmake
卷无止境8 天前
C++ 的Eigen 库全解析
c++
卷无止境8 天前
现代 C++特性大盘点:一门脱胎换骨的老语言
c++·后端