QT学习-界面操作积累

QT知识点总结

    • 1、变圆和去窗口边框
    • 2、窗口移动
    • 3、qt摄像头采集
    • 4、添加背景时不影响其他图形
    • 5、天气查询的API
      • 5、1响应的json数据
    • 6、QT打包全过程
    • 7、QT http请求打包时候的问题
    • 8、QT有可能会报中文字库的错误

1、变圆和去窗口边框

//改变样式表
border-radius: px;
//代码设计变圆
控件->setstyle("border-radius: px;");
//去窗口边框
setWindowFlags(Qt::FramelessWindowHint | windowFlags());
//把背景设置为透明
setAttribute(Qt::WA_TranslucentBackground);

2、窗口移动

/*这个东西使用有bug,combox控件选择导致窗体乱移动*/
//头文件
#include 
#include 

//成员定义

public:
	void mousePressEvent(QMouseEvent *e);//重写鼠标点击事件
	void mouseMoveEvent(QMouseEvent *e);//重写鼠标移动事件
private:
	QPoint p;
//具体函数实现,也是参考别人的,有bug我没改。
void Widget::mousePressEvent(QMouseEvent *e)
{
    if(e->button() == Qt::LeftButton)
    {
        //求坐标差值
        //当前点击坐标-窗口左上角坐标
        p = e->globalPos() - this->frameGeometry().topLeft();
    }
}

void Widget::mouseMoveEvent(QMouseEvent *e)
{
    if(e->buttons() & Qt::LeftButton)
    {
        //移到左上角
        move(e->globalPos() - p);
    }

}

3、qt摄像头采集

//1、添加库文件
添加pro multimedia multimediawidgets
//2、添加头文件
#include 
#include 
#include 
#include 
#include 
#include 
#include 
//3、添加定义
private:
 	QCamera *ca1;
    QCameraImageCapture *capture;
//4、函数具体实现
 /*************摄像头名称显示*******************/
    QList infos = QCameraInfo::availableCameras();
    foreach(QCameraInfo info,infos)
    {
        ui->comboBox->addItem(info.deviceName());
    }
 /*********************开始采集***********************/
	ca1 = new QCamera(ui->comboBox->currentText().toUtf8(),this);
    ui->widget->show();
    capture = new QCameraImageCapture(ca1);
    QCameraViewfinder *v = new QCameraViewfinder(ui->widget);
    v->resize(ui->widget->size());
    ca1->setViewfinder(v);
    v->show();
    ca1->start();
  /*********************截图***********************/
  capture->capture(ui->lineEdit_3->text());//可以关联一个抓取信号将截取的图片显示在label上;
  

4、添加背景时不影响其他图形

不影响其他界面添加背景:
	英文输入模式下:#部件名称{背景操作}

5、天气查询的API

天气api:https://www.tianqiapi.com/index/doc?version=day
https://v0.yiketianqi.com/api?unescape=1&version=v62&appid=53361665&appsecret=PfH2g0YK&city=%1 //id是我自己注册的

5、1响应的json数据

{
    "nums":226, //今日实时请求次数
    "cityid":"101120101", //城市ID
    "city":"济南",
    "date":"2022-05-05",
    "week":"星期四",
    "update_time":"22:38", //更新时间
    "wea":"多云", //天气情况
    "wea_img":"yun", //天气标识
    "tem":"25", //实况温度
    "tem_day":"30", //白天温度(高温)
    "tem_night":"23", //夜间温度(低温)
    "win":"南风", //风向
    "win_speed":"3级", //风力
    "win_meter":"19km\/h", //风速
    "air":"53", //空气质量
    "pressure":"987", //气压
    "humidity":"27%" //湿度
}

6、QT打包全过程

1、release版本找到库文件,直到不报缺库提醒,报0x000007,也是能用的。
2、创建一个英文路径的文件夹,然后将exe复制到这个文件夹
3、找到QT黑科技,cd /d filepath(自己的文件夹路径)
4、windeployqt app.exe
5、用Enigma Virtual Box,文件选项要选择一个压缩文件。执行封包就可以了。

7、QT http请求打包时候的问题

https://blog.csdn.net/wtl1992/article/details/110401820

要添加openssl库里面的三个东西
1、libcrypto-1_1-x64.dll
2、libssl-1_1-x64.dll

在这里插入图片描述

8、QT有可能会报中文字库的错误

1、目前的解决方案,删除中文字符

你可能感兴趣的:(QT最初版,qt,学习,开发语言)