- 博客(54)
- 问答 (1)
- 收藏
- 关注
原创 vmvare安装ubuntu后剪贴板无法共享问题
今天在搞ros时,因为ros在ubuntu上支持的最好,用虚拟机安装Ubuntu后遇到了Ubuntu和Windows无法共享剪贴板问题,自己解决了,在此记录下。1.安装open-vm-tools。2.安装open-vm-tools。
2023-04-29 18:10:08 1385 1
原创 关于pbr中镜面IBL低差异序列中的 Van Der Corput 序列
但是浮点数的范围是有负数的,这样虽然完成了按位反转,但读出的数不是正确的,我们需要这些数规定在0~1之间,所以乘以了* 2.3283064365386963e-10这个数,但是我只知道为什么乘这个数。17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32(后面的位是补0的,一共是16位0,我们不算)(前面面的位是补0的,一共是16位0,我们不算) 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,接下来两步就不这样写了,太累了,哈哈。
2022-11-12 16:13:24 669 1
原创 QT glsl使用opengl矩阵函数inverse提示错误
来检查你文档的格式,但我们真正去解析这些数据是我们所创建的类,如继承了QOpenGLFunctions_3_3_core的,那么会由3.3版本的去解析这些数据,所以即使编辑器报错,但是在程序中依然是可以正常使用的。这是之前学习时遇到的问题,其实这是因为qt的glsl文件是以opengl es 2.0。QT使用glsl 写vertex的shader程序时矩阵函数提示错误。但是可以正确编译运行,只是qt creator 有红线并有错误提示。
2022-10-15 14:26:06 540
原创 关于string QString 和char *
写这篇文章是因为最近在写opengl和opencv程序,由于opencv是c语音移植,opengl也是c语言先实现的,有很多函数的参数是char */const char * ,但是总所周知,char * 很难和其他类型的数据拼接,反而使用string 和qt中的钱string可以使用+轻松拼接这样的结果是QString类型的 “abc2def”这就很舒服但是要把QString类型要放进const char *为参数类型的函数里,这就遇到了类型转换其中。
2022-10-08 13:43:09 930
原创 linux 编译 assimp库
我找了好多方法,搞完之后还是有别的问题,所以我就不停的找assimp版本,找到一个比较稳定的版本,也就是learnopengl 的版本,3.1.1,在3个系统平台都能成功编译。个人想在linux系统使用qt+opengl+assimp库进行模型加载,但是assimp库在linux上编译总是出错,个人搞了整整两天,各种方法都试过,终于搞定了。这个问题,其实就是编译器应该低,支持c++11但不支持c++17的问题,经常出现在cmake命令过程,而且是一些assimp库版本较高时有的问题。
2022-10-07 19:36:43 1052
原创 【opengl】关于glBufferData函数
平时绘制的三角形的位置数据不会改变,每次渲染调用时都保持原样,所以它的使用类型最好是GL_STATIC_DRAW。如果,比如说一个缓冲中的数据将频繁被改变,那么使用的类型就是GL_DYNAMIC_DRAW或GL_STREAM_DRAW,这样就能确保显卡把数据放在能够高速写入的内存部分。它的第一个参数是目标缓冲的类型:顶点缓冲,成员顶点缓冲。GL_STREAM_DRAW :数据每次绘制时都会改变。GL_STATIC_DRAW:数据不会或几乎不会改变。GL_DYNAMIC_DRAW:数据会被改变很多。
2022-09-28 17:56:02 2803
原创 opencv安装及配置,对源码进行编译并配置环境
由于opencv有很多版本,它其中的目录结构改动不少,我们这把使用v4.54版本的来使用先上官网下载源码https://github.com/opencv/opencv/archive/refs/tags/4.5.4.zip这是直接下载方式然后下载opencv_contribhttps://github.com/opencv/opencv_contrib/archive/refs/tags/4.5.4.zip要求版本一致,不容易有bug或一些莫名其妙的错误然后下载cmakehttps://c
2022-04-28 19:32:35 4133
原创 opencv 安装及配置
1.到官网下载opencv库,https://opencv.org/2.如果是安装文件,安装到自定义位置,如果是压缩包,解压到自定义位置3.配置环境变量右击此电脑(有点是计算机)-属性-高级系统设置-环境变量-修改系统变量里的path,把文件的路径填进去,这里我就不详细讲了,环境配置变量是很常见的操作,大家应该都会,如果不会可以自行百度一下4.在vs中包含头文件和库文件打开vs,我这边用的是2017的,新建/打开一个项目/解决方案(任意项目或空的都可以)打开属性,在项目里就有注意:
2022-04-21 11:34:29 8616
原创 使用qt写吃豆人游戏
最近在空闲的时候玩起了小时候的conanical Game,就想着写个吃豆人小游戏但是呢,由于自己临时有其他事,只写到了场景,玩家和人机都不会动,我会把自己写的源码发出来,大家可以学习和补充我这先说下具体思路吧我使用的qt QGraphicsScene与view加item完成的类有base所有类的基类,然后是movebase,所有移动类的基类,继承basepropbase,所有道具类的基类,继承baseplayer,玩家类,继承movebaseenemy,敌人类(人机),继承movebas
2022-04-14 15:43:08 2866
原创 qt qgraphicsitem用来实现 ----碰撞检测的功能,如小游戏等等
三个碰撞检测函数该图形项是否与指定的图形项碰撞bool QGraphicsItem::collidesWithItem(const QGraphicsItem *other, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape) const该图形项是否与指定的路径碰撞bool QGraphicsItem::collidesWithPath(const QPainterPath &path, Qt::ItemSelectionMode m
2022-04-09 19:40:38 6682
原创 QT窗口销毁方式
setAttribute(Qt::WA_DeleteOnClose);然后在执行close()后,等待一会就会销毁对象close();然后执行QWidget的protected函数destroy()会销毁对象close():使用QObject的deleteLater()函数;我目前知道的有这些,有知道其他更多的小伙伴可以追加哦...
2022-04-07 19:05:49 2364
转载 extern 关键词如何使用
今天在写项目时遇到一个想定义的全局变量在任何文件都可以使用,但是声明和赋值的位置搞不清楚了,就想着回顾一下,看到有位大佬的说明,真的是太精彩了,给大家看下extern是C/C++语言中表明函数和全局变量作用范围(可见性)的关键字,该关键字告诉编译器,其声明的函数和变量可以在本模块或其它模块中使用。通常,在模块的头文件中对本模块提供给其它模块引用的函数和全局变量以关键字extern声明。例如,如果模块B欲引用该模块A中定义的全局变量和函数时只需包含模块A的头文件即可。这样,模块B中调用模块A中的函数时,在编
2022-04-07 18:30:05 1460
原创 关于QPainter无法绘制问题
今天使用了QPainter绘制背景以及窗体上的控件但是所有语法都正确,资源路径也对,程序也没有报错,也是写在paintevent里的,但是就是不见影,这是怎么回事呢看下原来的代码 QPainter pal; QBrush brush(QPixmap(":/images/rule/gameRule.png")); pal.setBrush(brush); pal.drawRect(0,0,RULE_WINDOW_WIDTH,RULE_WINDOW_HEIGHT);
2022-04-07 13:12:53 2965 3
原创 QMovie的使用
QMovie是一个可以存放动态视频的类今天第一次使用,记录一下一般是配合QLabel使用的,可以用来存放GIF动态图 m_background = new QLabel(this); m_background->setGeometry(0,0,MENU_WINDOW_WIDTH,MENU_WINDOW_HEIGHT); QMovie *backgroundMovie = new QMovie(":/images/menu/MenuBackground.gif",QByteArra
2022-04-07 11:30:29 1825
原创 qt音频或视频文件放入.qrc资源文件时不能编译通过或者不能播放
今天在做qt项目时,要用到音效文件,音效文件要放到.qrc资源文件夹下,结果音效文件太大,编译时只能编译一部分,导致播放的时候没有效果,也没有报错,真的是一头雾水,本来以为是音频文件的问题忙活了一个晚上,找了好多格式的,也没有用,然后又试了路径原因,还是不对,真的是头皮发麻,还好,功夫不负有心人,最终终于找到结果了在.pro文件中加入CONFIG = resources_big即可解决此问题就是资源文件太大导致编译的原因以后大家要注意了...
2022-04-06 20:26:20 1190 2
原创 参数为二维数组的函数和指向二维数组的指针声明
今天在做游戏的时候,由于地图是用二维数组实现的,而且有点大,想用一些函数来操作二维数组,遇到这个问题,花了不少功夫,大家一起来看下吧第一,参数为二维数组的函数声明方式我就直接举例说明了void addBase(Object (array[ROW][COLUMN]),int x,int y,Base::Direction);void addArea64(Object array[ROW][COLUMN], int x, int y, Object value){ for(int i = 0
2022-04-05 18:22:58 1994
原创 关于QPropertyAnimation动画类
本文章只介绍QpropertyAnimation的动画效果,并不过深介绍主要是讲这个函数void setPropertyName(const QByteArray &propertyName)1.淡入淡出效果setPropertyName(windowOpacity);值为0到12.平移效果setPropertyName("geometry");平移效果还有一个就是"pos"setPropertyName("pos");这两个都是可以的不同点:geometry要设置一个r
2022-04-05 11:18:01 1117
原创 关于qss,QSlider滑动块
add-page:Horizontal#musicProgressSlider{ background-color: rgb(205,205,205);height:4px;}QSlider::sub-page:Horizontal#musicProgressSlider{ background-color: rgb(255,78,78);height:4px;}QSlider::handle:Horizontal#musicProgressSlider{
2022-04-05 10:37:19 604
原创 qss样式,关于QScrollBar滚动条
QScrollBar:horizontal{width:8px;background:transparent;}QScrollBar::handle:horizontal{background:rgb(224,224,224); width:5px; border-radius:3px;}QScrollBar::up-arrow:horizontal{border:none;}QScrollBar::sub-line:horizontal{background:transparent;}QScrol
2022-04-05 10:32:41 978
原创 对Qimage进行坐标变换(仅改变图片而不改变整体窗体坐标)
QMatrix 矩阵的rotate()与image的transformed()函数先来看下transformed()的官方文档返回使用给定变换矩阵和变换模式进行变换的图像的副本。对变换矩阵进行内部调整以补偿不需要的平移;即生成的图像是包含原图像所有变换点的最小图像。使用trueMatrix()函数检索用于转换图像的实际矩阵。参见trueMatrix()和Image transformation简单来说就是仅仅对image进行坐标转换,而不是对整个窗体的坐标,切返回的是转换后的副本,是可以一直使用的
2022-04-04 22:37:25 678
原创 qt文件读写
1、采用QFile与QIODevice方式QFile file(文件路径)file.open(QIODevice::ReadOnly|QIODevice::Text);file.readAll(); //这个函数有返回值,就是读取文件的内//容,是QByteArray类型的,可以使用toString转为QString 类型以只读方式打开open函数后可以填写QIODevice的打开模式枚举类,可以ctrl+鼠标左键点进去查看有哪些file.write(要写入的内容);写入文件(open(
2022-04-04 22:12:38 1241
原创 qt判断键盘按下的键
需要实现Event槽函数或者QKeyPressEvent槽函数这两个槽函数会传入一个event指针对象判断event->key();Qt中有枚举类KEY其中包含了键盘的按键,我们只需要用if判断是否相同即可enum Key { Key_Escape = 0x01000000, // misc keys Key_Tab = 0x01000001, Key_Backtab = 0x01000002, K
2022-04-04 20:07:43 2840
原创 Qt获取屏幕大小并设置居中
Qt获取当前屏幕大小1、头文件#include2、代码QScreen *screen = QGuiApplication::primaryScreen ();QRect screenRect = screen->availableVirtualGeometry();
2022-04-04 18:39:22 1087 2
原创 关于c++静态成员变量析构的问题
是这样的,有一个类Map,它有一个static变量还有一个static的函数class Map{public: static void initMap();private: static char *m_map;};在cpp文件中new了这个对象,问题来了,这个对象使用析构函数能析构掉吗?我们来试试看再加入一个getMap()函数;static char *getMap();然后new这个静态成员变量char Map::m_map = new char[MAP_SIZEM
2022-04-03 21:29:48 3173
原创 QSqlQuery的执行方式
1.使用QSqlQuery执行不带参数的SQL语句时可以使用exec(QString)函数如:QSqlQuery query;query.exec(“SELECT * FROM employee”);2.使用带参数的SQL语句时,先用prepare()函数准备SQL语句,再使用bindValue()函数替换形参,再使用exec()函数进行执行形参有两种方式1,使用":参数名"的方式如:QSqlQuery query;query.prepare(“SELECT * FROM :TABLE”)
2022-04-03 15:29:23 1219
原创 git把分支代码合并到主分支
git把分支代码合并到主分支1.要把代码合并到哪个分支,需要先切换到那个分支git checkout 分支名;2.代码优先的分支(代码多的分支,最新修改过要保存的)git merge 代码优先的分支如:把dev分支合并到master分支,就需要1.把dev分支提交(当前为dev分支)git add .git commit -m “first”git push origin dev2.合并分支git checkout mastergit merge dev这样就可以把dev的代码合并
2022-04-03 13:32:41 6192
原创 用qt做网易云音乐--源代码
之前由于太忙,没有继续写了,所以把已完成的代码上传到git,给大家分享先看下目前完成的成果有些部分模块实现的方法我写在之前的博客里了,还有些都是相似的功能,大家看看源代码理解一下,如果有哪些地方不懂,可以私信我,我看到会解答的git链接:https://e.coding.net/hhpweb/wyymusic/wyymusic.git有需要的小伙伴可以下载哦如果大家觉得对你们帮助的话,可以关注下我博客,顺手点个赞哦...
2022-04-01 13:11:08 1470 10
原创 用qt做网易云音乐--画廊实现
qt画廊采用子控件最多显示父控件大小的原理,采用move函数进行,再加QPropertyAnimation动画进行操作下面上下最终成品以下是成员变量 int m_currentShowGalleryFirstIndex; int m_currentShowGalleryLastIndex; 由于向左或向右移动时,要有标志来确定是否到最左或最右来判断还能否移动,这里定义两个索引用来判断位置 int m_galleryItemCount; 项总数,总数*(每个项宽度+项间
2022-04-01 13:07:58 450
原创 qt-关于QMediaPlayer播放音乐卡顿
由于要做播放器的类似功能,要更新slider以及播放时间,写了以下四个槽函数,运行后发现,播放的音乐一卡一卡的,找了好久也没找到原因,重写了一遍,发现这四个槽函数一加播放就会卡顿 void player_stateChange(QMediaPlayer::State state); { switch(state) { case QMediaPlayer::StoppedState: case QMediaPlayer::PausedState:
2022-04-01 10:48:43 2488 1
原创 linux (centos,ubantu本人没试过)安装gstreamer
yum -y install gstreamer-ffmpegyum -y install gstreamer-plugins-uglyyum -y install gstreamer-plugins-badyum -y install ffmpegyum -y install libvdpauyum -y install mpg123yum -y install mplayeryum -y install mplayer-guiyum -y install gstreamer1-liba
2022-03-31 21:11:37 1675
原创 用qt做网易云音乐--轮播图实现(2)
窗体设计大概是这样前面我们写到这里,接下来继续这里的要点,每张图片的位置不同,每张图片的大小不同,没张图片显示的层级不同(就是图片重叠的情况下优先展示的)我们先看这几点,我这里把每张图片的这些特点都写进了list集合,这里详细介绍下QList<int> m_ZValueList; //每张图片优先级的list,设置那张图片在上那张在下,如同raise()和lower()效果QList<qreal> m_PixmapScaleList; //每张图片的缩放比例list.
2022-03-24 18:02:05 838 3
原创 用qt做网易云音乐--轮播图实现(1)
这个轮播图可是废了我好大的劲,因为网上用qt做轮播图的很少,大多都是html和js,找到一些大神做的轮播图,有点不符合预期,有的太复杂(不是我看不懂,是无用的代码有点多),于是,我这里秉着能减就减的原则,在我能力范围内用少的代码做出了轮播图,给大家看下成果 banner 这里是用QGraphicsView,QGraphicsScent,以及自定义了一个QGraphicsItem做的,动画
2022-03-24 17:30:41 1214 5
原创 关于linux防火墙的简单命令
关于linux防火墙的简单命令查看防火墙状态systemctl status firewalld会出现以上的内容,可以看到active后面有绿色的active(running) 表示防火墙是开启的关闭防火墙systemctl stop firewalld.service //停止firewallsystemctl disable firewalld.service //禁止firewall开机启动开启防火墙systemctl enable firewalld.service注意,li
2022-03-22 09:50:37 959
原创 用qt做网易云音乐--个人中心实现
先上完成图大体设计及位置,主要是按钮和label我这里图标采用的是QLabel的pixmap记住要勾选scaledContents,缩放内容到label大小,不会导致图标只显示一部分这样设计完成后有一个问题,就是label会遮挡button的事件我们要用setAttribute(Qt::WA_TransparentForMouseEvents)让label事件穿透以下是窗体cpp文件(供大家参考)#include "personalcenterwindow.h"#include "ui
2022-03-19 10:04:52 1294 1
原创 用qt做网易云音乐--搜索框实现
话不多说,先上样品这里出了用到了QListWidget和他的setItemWidget()函数,其他都是简单的qss样式绘制这里每个项是自定义的widget,都是label即可大体位置就是这样然后是存放这些项的窗体大体位置以下是每个项widget的代码(头文件我就砍掉了)#include "searchitem.h"#include "ui_searchitem.h"SearchItem::SearchItem(QWidget *parent) : QWidget(pa
2022-03-18 18:44:00 852
原创 git初始化项目(无多余步骤)
git config --global user.name “”//用户名git config --global user.email “” //电子邮箱在项目目录touch README.mdgit initgit add .git commit -m “first commit”git remote add origin https://github.com/…/.git //代码仓库地址git push origin master创建dev分支git checkuo
2022-03-17 12:04:10 979
空空如也
QT使用opengl矩阵函数提示错误
2022-10-04
QGraphicItemAnimation有什么其他可以代替的类吗
2022-03-20
TA创建的收藏夹 TA关注的收藏夹
TA关注的人