QT学习-界面操作积累

本文概述了QT编程中的关键技巧,如修改控件样式实现圆角、去除窗口边框、流畅窗口移动、摄像头捕获与实时背景应用,以及使用天气API获取JSON数据。此外,还涵盖了打包过程、HTTP请求问题和中文字库错误的解决方案。
摘要由CSDN通过智能技术生成

1、变圆和去窗口边框

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

2、窗口移动

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

//成员定义

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 <QMessageBox>
#include <QDebug>
#include <QCamera>
#include <QCameraInfo>
#include <QCameraViewfinder>
#include <QCameraImageCapture>
#include <QPixmap>
//3、添加定义
private:
 	QCamera *ca1;
    QCameraImageCapture *capture;
//4、函数具体实现
 /*************摄像头名称显示*******************/
    QList<QCameraInfo> 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、目前的解决方案,删除中文字符
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值