QT知识点总结
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、目前的解决方案,删除中文字符