博客搬家通知
通知
即日起,本站已不再更新,搬家至——半生瓜のblog。
回首
这个博客采用Hexo框架,使用Butterfly主题,从2021年2月至今为止。
从开始的买服务器,域名,备案,寻找教程魔改美化,服务器续费,到后来更换域名,再备案,最后搬至Github。
原因
今年(2022年)3月份,我的Gitee图床崩了,开始寻找新的图片存储,最稳定的莫过于自己搭一个,于是我选择了阿里云OSS对象存储,如果要想直接通过链接访问存储桶的中的图片,需要使用自己的域名,否则会直接下载图片
PS: (我以为在md文件中也没法显示,其实是可以的,如果不用地址栏直接访问显示图片,其实我觉得根本就不用域名)。
于是我又买了域名,服务器,开始没想到服务器要干嘛,只是想如果我那台学生机到期了,还能有个挂机器人的地方。
但是后来我还是开始想弄个新博客了…,选择了Wordpress。
这应该是我临毕业这几年最后一个折腾的博客了,域名买了3年,服务器的话到明年再找个便宜的买,好像Wodrpress有打包搬家功能。
展望未来
我的第一篇博客是20年11月份在CSDN中的一片,至今,无论质量高低,也有了大概两 ...
【QT】多语言翻译
QT多语言翻译方法
tr()函数获取需要翻译的文本
lupdate.exe编译生成xxx.ts文件
linguist.exe进行翻译
lrelease.exe生成去xxx.qm文件
示例单一语言翻译,直接main中注册
12345QTranslator *translator = new QTranslator;translator->load("lang_en.qm");a.installTranslator(translator);//安装翻译器
多种语言
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162#include "widget.h"#include "ui_widget.h"#include <QVBoxLayout>#include <QTranslator>#include <QAppl ...
【QT】QT线程
线程QT中的QThread提供了与平台无关的线程,一个QThread代表了一个应用程序中可用独立控制的线程,它与进程中的其他线程共享数据,但是是独立执行的,QThread从run()函数开始执行,默认run()通过exec()来开启事件循环,并在线程内运行一个Qt事件循环。
要创建一个线程,需要继承自QThread,并重新实现run()函数。
示例:
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051#ifndef MYTHREAD_H#define MYTHREAD_H#include <QThread>class MyThread : public QThread{ Q_OBJECTpublic: MyThread(QObject* parent = nullptr); void stop();protected: void run() override;//线程启动,执行入口private: b ...
【年终总结】2021年终总结
2021年终总结迟到的年终总结。——(2022/3/23 22:44)
回望2021
学习方面:
2021年,对我来说重要的一点就是明确的自己的方向——C++服务器开发。
从年初到4月的C语言,紧接着数据结构,Java基础语法,C++,网络编程(一小点),C++,数据结构,MySQL,win32,MFC,计算机网络,到现在的QT。
我对我这段时间的评价就是,可圈可点,但仍需努力,给我最直观的不足就是,假期时间的利用率不够高,也就是我在假期的学习效率要低一些,倒也不是止步不前,只是进度有些慢,勉勉强强吧。
生活方面:
春夏秋时,运动量较大,进入冬天后,因为天冷以及空气质量较低,运动量低了不少。
展望2022
2022,再学完QT之后,慢慢的我就需要往深了学了,加强一下C++内功并开始学习Linux服务器开发。
坚持
leetcode每日打卡
锻炼
早睡
希望我不再遗憾过去,只把握当下。
【QT】TCP、UDP通信
UDP、TCPUDP
UDP(User Datagram Protocol,用户数据报协议)
UDP是一个轻量级、不可靠、面向数据报的、无连接的协议,多用与可靠性不严格,不是非常重要的传输。
QUdpSocket类继承自QAbstractSocket,用来发送和接收UDP数据报。
“Socket”即套接字,即IP地址+端口号。其中IP地址指定了网络中的一台主机,端口号则指定了该主机上的一个网络程序,使用套接字即可实现网络上的两个应用程序之间的通信。
QUdpSocket支持IPv4广播,要广播数据报,则只需要发送到一个特殊的地址,QHostAddress::Broadcast(255.255.255.255),数据报一般建议发送字节数小于512字节。端口号选择1024~65535(1024一下的常用作保留端口号,如FTP常用端口号21,Telnet常用端口号23,DNS域名服务器常用端口号53等)。
示例:
发送端
1234567891011121314151617181920212223242526#include "widget.h"#include &qu ...
【月末总结】前言
我决定新增月末总结和年终总结环节。
【QT】QT中使用Lambda表达式
Lambda表达式Qt5中有全新的信号与槽语法,在Qt4基础上提高了信号与槽的灵活性,允许使用任意函数作为槽函数。但如果想更好地执行异步代码,来函数名都不想定义,则可以通过Lambda表达式来达到这个目的。
Lambda表达式是C++11新增加的特性。
Lambda表达式的引入符
引入符
说明
[]
不捕获任何变量
[=]
以传值的方式捕获所有外部变量
[&]
以传引用的方式捕获所有外部变量
[x,&y]
x以传值的方式捕获,y以传引用的方式捕获
[=,&x]
x以传引用的方式捕获,其余变量以传值的方式捕获
[&,x]
x以传值的方式捕获,其余变量以传引用的方式捕获
格式:
[捕获列表] (参数列表-可以省略) (函数选项-可以省略) -> (返回值类型-可以省略){函数体}
详见—链接
示例1:
收到拒绝文件信号,执行的槽方法功能就是直接返回,没有进行任何的外部变量捕获。
123connect(recvFile,&ReceiveFile::refuseFile(),[](){ re ...
【QT】QString、QLatin1String、QStringLiteral
QString、QLatin1String、QStringLiteralQStringQString:
QString提供了一个Unicode字符串,QString存储的是一串QChar,而QChar提供了16位的Unicode字符,后台使用隐式共享减少了内存的开销。
假设QObject::setObject函数参数列表是QString类型,给它传递参数”test”,这里有一个通过构造产生的从const char*到QString的隐式转换,产生一个新的QString对象,字符串数据拷贝,并将字符串从UTF-8转为UTF-16的unicode字符。
这样增大了内存的开销,减慢了运行效率。
解决——重载运算符。
重载运算可以直接操作原始char*,不必为了我们的字符串常量去创建临时QString对象。
QString提供了很多的成员函数使用const char*而不是QString类型的字符串实现重载,包括拷贝构造、赋值运算、比较运算及其他的函数,如插入insert()、替换replace()、和indexOf()。
这些函数经过优化后避免在函数调用的使用从const char 数据构 ...
【QT】QT基本图形绘制
基本图形绘制QPainter绘制基本图形
注意:QPainter画弧度所使用的角度值,是以1/16°为单位的,在画弧度的时候1°用16表示。
例如:30°——30 x 16
兼容模式QPainer::CompositionMode
**例如:**可用于图片叠加,达到你想要的效果。
QPainterPath绘制简单图形QPainterPath为QPainter类提供一个存储容器,里面包含了所要绘制的内容的集合及绘制顺序,如长方形、多边形、曲线等各种任意图形。当需要绘制此预先存储在QPainterPath对象中的内容时,只需调用QPainter类的DrawPath()即可,如addRect()加入一个方形,addEllipse加入一个椭圆形,addText()加入文本。
画笔笔刷风格画笔风格——Qt::PenStyle
笔帽风格——Qt::PenCapStyle
Qt::SquareCap 方形线端,不覆盖线的端点
Qt::FlatCap 方形线端,覆盖线的端点,并以线框一半向外延伸
Qt::RoundCap 圆线端
连接点——Qt::PenJoinStyle
Qt::BevelJ ...
【QT】QT事件处理
事件处理QT中,事件作为一个对象,继承自QEvent类,常见的有键盘事件QKeyEvent、鼠标事件QMouseEvent和定时器事件QTimerEvent等。QT中,任何QObject子类示例都可以接收和处理事件。实际编程中通常实现部件的paintEvent()、mousePressEvent()等事件处理函数来处理特定部件的特定事件。
每个程序的main函数最后都会调用QApplication类的exec()函数,它会使QT应用程序进入到事件循环,使应用程序在运行的时候接收各种事件。一旦有事件发生,QT便会构造一个相应的QEvent子类的对象来表示它,然后将它传递给QObject对象或子对象。
鼠标事件对鼠标实现进行重写来实现你想要达到的功能。
mouseevent.h
12345678910111213141516171819202122232425262728#ifndef MOUSEEVENT_H#define MOUSEEVENT_H#include <QMainWindow>#include<QLabel>#include<QMouseE ...
【QT】QT调色板类
QPalette调色板类QT提供的调色板类QPalette专门用于管理部件外观显示,相当于部件或对话框的调色板,管理他们所有的颜色信息。每个部件都包含一个QPalette对象,在显示时,按照它的QPalette对象中对各部分各状态下的颜色的描述进行绘制。
dialog.cpp
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561 ...
【QT】QT不规则窗体效果——-遮罩
不规则窗体效果——遮罩根据一张图片来设置窗体显示效果。setMask
1234567891011121314151617181920212223242526272829303132333435#include "widget.h"#include "ui_widget.h"#include<QPixmap>#include<QBitmap>#include<QPainter>Widget::Widget(QWidget *parent) : QWidget(parent), ui(new Ui::Widget){ ui->setupUi(this); QPixmap pixmap; pixmap.load(":/flower.png"); ui->label->resize(pixmap.size()); this->resize(pixmap.size());//设置窗体大小 //设置遮罩 this-& ...
【QT】QT透明及阴影
QT部件透明及阴影效果透明:
全部透明。
12窗口透明属性,取值0~1,0表示完全透明,1表示完全不透明setWindowOpacity(0.5);
部件不透明,窗体背景完全透明。
12setWindowFlags(Qt::FramelessWindowHint);//设置无边框setAttribute(Qt::WA_TranslucentBackground);//设置背景透明
部件设置透明。
123QGraphicsOpacityEffect *opacityEffect = new QGraphicsOpacityEffect ;opacityEffect->setOpacity(0.1);ui->label->setGraphicsEffect(opacityEffect);
阴影:
1234567//阴影效果QGraphicsDropShadowEffect *shadowEffect = new QGraphicsDropShadowEffect; //阴影色,透明度shadowEffect->setColor(QColor(100,100, ...
【QT】样式表语法
Qt样式表Qt样式表介绍Qt样式表是一个可以自定义部件外观的强大机制,样式表的概念、术语、语法均受到HTML层叠样式表(CSS)的启发。
样式表可通过QApplication::setStyleSheet()函数将其设置到整个应用程序上,也可以使用QWidget::setStyleSheet()将其设置到指定的部件或子部件上,不同级别均可设置样式表,称为样式表的层叠。
样式表也可通过设计模式编辑样式表。
Qt样式表语法及使用样式规则每个样式规则由选择器和声明组成。
选择器:指定受该规则影响的部件。
声明:指定则个部件上要设置的属性。
例如:
12345678QPushButton{color:red} QPushButton是选择器;{color:red}是声明;color是属性;red是值。选择器{属性1:值1;属性2:值2;属性3:值3}
此规定指定了QPushButton和它子类使用红色作为前景色。
样式表中一般不区分大小写,如color与COLOR表相同属性,但类名、对象名以及Qt属性名区分大小写。
声明中的多组”属 ...
DIY显示器+亚克力板制作外壳
前言上个月,我重启了DIY显示器的这个想法。
于是,我买了显示器面板,驱动板,一些螺丝,以及几块亚克力板,由于我对屏幕的大小以及外壳要做的大小没有什么概念,加上我不会CAD,所以,我准备手工切割,用胶水拼接一个外壳。
先看一下效果吧。
制作流程大致制作流程如下:
1.用一块亚克力板做底板,根据显示器面板、驱动板的大小以及四个角的孔位打孔,确定摆放位置。
并将螺丝+双通尼龙柱固定在显示器面板所要放置的四个角落中。
2.根据需要的大小将四周多余的切掉。
3.根据大小切割出四周所需要的板子。
4.用热熔胶将周围固定。
5.根据需要在四周开孔,用水将粉末碎屑冲洗干净,加胶固定。
6.连接固定各个零件,完成。
注意
在制作的过程中,最费时费力以及最难的就是亚克力板的切割了,没想到3mm就这么难切。
先用笔画线,然后用尺子抵着用勾刀划。划呀划呀划, 差不多了,一掰就开了(熟练了先用尺子比着用勾刀划个几刀后就可以把尺子拿走了,沿着痕迹划就行)。
打孔也比较费劲,可以用电钻开孔,然后用边上蹭,或用锉来回蹭,
开始切得七扭八歪的,后来慢慢熟练了,会好一些。
本来准备 ...
【Python】nonebot学习(1)
nonebot学习(1)具体的安装使用部署流程还请见其他作者的文章。
使用nb run指令运行
从window下迁移到linux环境,记得安装相应的包。
报错提示ModuleNotFoundError:No module named ‘xxx’
ubuntu环境下部署
下载对应的版本,更改权限(777),安装脚手架pip install nb-cli,安装失败,可能是权限不够,切换至root用户安装。
ubuntu挂到后台
nohup xxx &,例如:nohup nb run &。jobs查看nohup挂到后台的程序,关闭终端后就看不见了。
若关闭进程,使用ps -ef查看所有进程,找到对应的ID,kill掉。
ls -a查看当前目录下所有文件(包括隐藏文件)。
ubuntu窗口
screen -R xxx新建窗口, alt+a+d退出窗口,screen -r xxx恢复窗口。
【Python】Python爬虫爬取豆瓣电影top榜
相关视频——Python爬虫编程基础5天速成(2021全新合集)Python入门+数据分析
找到一个div,在div里面翻找你要的内容。
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374# -*- coding: utf-8 -*-from bs4 import BeautifulSoup #网页解析import re #正则表达式,进行文字匹配import urllib.request,urllib.error #制定URL,获取网页数据#正则表达式#影片详情链接findLink = re.compile(r'<a href=''(.*?)''>') #创建正则表达式对象,表示规则(字符串的模式)#影片片名findIm ...
【QT】QT模型/视图编程
模型/视图编程Qt中的模型/视图架构用来实现大量的数据存储、处理及显示。
MVC(Model-View-Controller)包括了3个组件:模型(model)是应用对象,用来表示数据;视图(View)是模型的用户界面,用来显示数据;控制(Controller)定义了用户界面对用户输入的反应方式。
委托(Delegate)用于定制数据的渲染和编辑方式。
模型所有的模型都基于QAbstractItemModel类,该类提供了十分灵活的接口来处理各种视图,这些视图的数据表现形式为表格(table)、列表(list)、树(tree)。
Qt提供了一些现成的模型来处理数据项:
QStringListModel存储简单的QString项目列表;
QStandardItemModel管理复杂的属性结构数据项,每一个数据项可以包含任意的数据;
QFileSystemModel、QSqlTableModel和QSqlRelationTableModel用来访问数据库。
当标准模型还无法满足需要时,可子类化QAbstractItemModel、QAbstractListModel或QAbstractT ...
【QT】QT富文本
富文本QTextEdit支持富文本处理,即文档中可使用多种格式,如文字、图片、表格等。
PlainText为纯文本。
由此可类比, windows的记事本就是纯文本编辑器,word就是富文本编辑器。
文档的光标主要基于QTextCursor类,文档的框架主要基于QTextDocument类。
一个富文本的文档结构主要分为几种元素:框架(QTextFrameFormat)、文本块(QTextBlock)、表格(QTextTable)、列表(QTxtList)。
每种元素的格式有相应的format类表示:框架格式(QTextDFrameFormat)、文本块格式(QTextBlockFormat)、表格格式(QText)、列表格式(QTextListFormat)。这些格式通常配合QTextCursor类使用。
QTextEdit类就是一个富文本编辑器,在构建QTextEdit类对象时就已经构建了一个QTextDocument类对象和一个QTextCursor类对象。只需调用他们相应的操作即可。
文档边框格式示例:
1234567891011121314151617181920ui-& ...