在新公司实习遇到的问题

1.SCP window向linux传文件的时候 无法传:

错误原因
1.是命令理解错误
scp C:\path\to\file.txt username@linux_ip:/home/username/
"C:\path\to\file.txt" 是window的文件的路径
username   需要上传给linux下的那个用户
linux_ip   linux的ip   使用ifconfig 可以查到   // 如果不认识这个命令需要安装一下
/home/username/       username用户的文件夹,需要通过pwd获取当前目录,然后填写绝对路径
2.是没启动ssh
1.先检查ssh是否运行(初次安装虚拟机配置linux时,需要注意这个问题)
sudo systemctl status ssh
2.检查是否安装
 sudo apt update && sudo apt install openssh-server -y
3.是否启动
sudo systemctl start ssh  # 启动 SSH
sudo systemctl enable ssh # 设置开机自启
3.   网络端口没开放

狠人!!!我直接关闭防火墙

2.linux Qt 无法编译:

解决方案

安装后未进行环境变量的配置,需要在.bashrc文件中写

安装完成之后找到Qt 下载的位置找bin的绝对路径

#加入环境变量
sudo vim ~/.bashrc
#加入环境变量末尾加入
export PATH="/opt/Qt5.12.11/Tools/QtCreator/bin:$PATH" # bin的绝对路径
export PATH="/opt/Qt5.12.11/5.12.11/gcc_64:$PATH"   #gcc_64的路径
#之后退出在cmd中输入
source ~/.bashrc
#最后
sudo apt-get install -y libxcb-xinerama0 libxcb-cursor0
#这样就可以编译了

3.Image  无法加载到qml的界面上,一直提示找不到

错误原因误解QML相对路径的写法

1.先给图片创建一个单独的文件夹

2.然后添加进Resource文件夹中

3.写入代码  注意绝对路径不是./  需要调用Qt.resolvedUrl(Path) 函数

直接上代码

Image{
        id: myImage
        source: Qt.resolvedUrl("Image/open.png")// 使用资源文件系统中的图像 
        
        width: parent.width * 0.5 // 设置图像宽度为父元素宽度的一半
        height: parent.height * 0.5 // 设置图像高度为父元素高度的一半
        fillMode: Image.PreserveAspectFit // 保持图像纵横比适应尺寸
        anchors.centerIn: parent

        onStatusChanged: {
            if (myImage.status === Image.Ready) {
                console.log("Image loaded successfully");
            } else if (myImage.status === Image.Error) {
                console.log("Failed to load image");
            }
        }


    }

4.构建cmake 添加组件

        1.首先保证必须已经安装了该模块,本次以serialport 作为例子

        2.在cmaketxt  文件的find_package 中加入 SerialPor

find_package(Qt6 REQUIRED COMPONENTS Quick SerialPort) 

        3.在cmaketxt文件的target_link_libraries中加入 Qt6::SerialPort

target_link_libraries(apptestSerialPort
    PRIVATE Qt6::Quick
    Qt6::SerialPort
)

        4.加入头文件写个代码测试

#include <QtSerialPort/QSerialPort>// 提供访问串口的功能
#include <QtSerialPort/QSerialPortInfo>// 提供系统中存在的串口信息

5.使用Cmake,使qml可以访问C++类属性

      之前误解的地方在于在qml中,我直接将C++类属性的名称作为qml属性绑定对象了

如图所示 可以看到,

正确做法 

1.先添加一个类对象,必须继承QObject

2.添加头文件#include <QtQML>  在类内Q_OBJECT 宏下放添加QML_ELEMENT

3.添加属性 然后ALT+加回车 

4.在main函数中添加  qmlRegisterType<MyObject>("MyObj",1,0,"MyObject");  包含MyObject的头文件   

        MyObject 是类名, MyObj是模块名 ,1版本号,0是此版本号,MyObject是类名

5.QML 部分 中 加入 import MyObj 1.0  

6.加入 MyObject{} 就可以正常访问了

6.访问C++类属性实际上是访问函数图例左图qml 右图C++部分

 我们实际访问的是ivalue这个函数,和iString 而并非是类私有成员名称

2025.3.28.。。。。。。。。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值