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");

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

感谢支持,持续更新

欢迎关注

相关推荐
geovindu1 小时前
python: Generators Pattern
开发语言·python·设计模式·生成器模式
wuminyu1 小时前
Java锁膨胀机制之偏向锁到轻量级锁源码剖析
java·linux·c语言·jvm·c++
没有不重的名么1 小时前
spyder使用教程
开发语言·python
阿正的梦工坊1 小时前
【Rust】06-函数、控制流与模块组织
开发语言·算法·rust
葱卤山猪1 小时前
二进制字节流序列化
c++·序列化
Lazionr1 小时前
类和对象(中):对象生命周期与运算符重载
c++
狗凯之家源码网1 小时前
永夜大圣 H5 棋牌大厅源码效果实测与品质解析
java·开发语言
爱装代码的小瓶子1 小时前
muduo库 --socket的封装
服务器·开发语言·php
凡人叶枫1 小时前
Effective C++ 条款13:以对象管理资源(RAII)
java·linux·开发语言·c++·嵌入式开发