QT学习笔记
文章平均质量分 61
issue是fw
19 years old, struggling in life, chasing daydreams.
展开
-
QT操作mysql数据库(创建,插入,更新,删除)
首先创建一个MYSQL类型的数据库类设置需要连接到的数据库服务器ip设置端口号设置数据库用户名设置数据库密码设置操作哪个数据库 QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL"); db.setHostName("127.0.0.1");//数据库服务器ip db.setUserName("root");//数据库用户名 db.setPassword("123");//数据库密码 db.setDatab原创 2021-03-07 23:06:37 · 14563 阅读 · 12 评论 -
QMYSQL driver not loaded driver not loaded(解决方案与libmysql.dll文件下载)
libmySQL.dll文件的百度网盘提取码:6666连接数据库的时候报错提示driver not loaded driver not loaded因为缺少数据库的驱动,需要下载libmySQL.dll文件然后放在对应的目录下,比如我是放在目录C:\Qt\Qt5.9.0\5.9\mingw53_32\bin\libmySQL.dll再次运行就不报错了下面就是链接数据库的代码#include "widget.h"#include "ui_widget.h"#include <QMess原创 2021-03-05 13:30:48 · 732 阅读 · 0 评论 -
QT飞机大战六(敌机血条的添加以及特殊子弹道具)
可能有点丑但其实是没有好的资源图片比如这个血条太生硬了,这个子弹道具怎么真的就和子弹一样??不过没事,功能对了就行首先考虑这个血条怎么搞。那么首先我们的敌机需要有个属性sum_hp(总血量),初始化随机一个值每次判断敌机和子弹相撞,更新敌机的now_hp(当前血量)只有血量小于等于零了,才让敌机消失并播放爆炸特效那么,我们就有一个比例就是now_hpsum_hp\frac{now\_hp}{sum\_hp}sum_hpnow_hp,也就是血条的红色部分占几分之几所以我们每次就从敌机的位.原创 2021-02-25 21:37:12 · 2435 阅读 · 0 评论 -
QT飞机大战五(碰撞爆炸特效类)
如图所示,在子弹碰到敌机时,同时产生爆炸特效,显得不那么突兀那么怎么做到的呢??其实也很简单,爆炸特效由一些图片组成,每当我们检测到子弹和敌机相交时就在这个位置播放一个爆炸特效,那么爆炸也可以封装为一个类而且,爆炸类和敌机类,子弹类也没什么两样!!!爆炸类肯定要有自己的坐标需要有自己的资源图片,但是动画需要很多资源图片连起来播放,所以我们用一个vectorvectorvector来存需要有自己的图片索引,不然怎么知道现在在展示第几张图片呢需要记录更换图片的间隔,主场景的定时器出发一次换一张原创 2021-02-24 20:57:49 · 1276 阅读 · 2 评论 -
QT飞机大战四(敌机出场类)
如图所示,一架架敌机出场联想子弹类,可以发现他们的结构是别无二致的,所以就比较简单了。需要有自己的坐标,资源图片需要有一个飞行速度,来控制它的yyy坐标一次加多少需要有一个矩形框用于爆炸检测同样敌机是不断出场的,所以在主场景中我们有一个敌机数组,需要重复利用所以有一个布尔变量闲置状态,为truetruetrue表示在飞行,否则可以拿来用需要提供一个更新坐标的函数,同时更新闲置状态敌机类EnemyPlaneEnemyPlaneEnemyPlaneenemyPlane.h#ifndef EN原创 2021-02-24 20:33:39 · 603 阅读 · 0 评论 -
QT飞机大战三(子弹类)
如图所示,子弹会不断从飞机的位置射出来那么子弹这个类肯定有自己的位置坐标肯定有自己的资源图片既然子弹需要"射"出去,也需要发射的速率,也就是更新一次几像素然后子弹需要有一个布尔变量:闲置状态设想一下,假如需要一个子弹就newnewnew一个发射出去,那么内存开销是不敢想象的所以我们给飞机类一个"弹夹",就是一个类型是子弹类的数组飞机每次发射子弹就从弹夹里找一个闲置的子弹发射出去然后子弹飞出屏幕后,就又恢复到闲置状态这样,在主场景中也只需要绘制那些非闲置的子弹即可子弹需要有一个函数来修改.原创 2021-02-23 21:58:18 · 1387 阅读 · 0 评论 -
QT飞机大战二(飞机类)
如图所示飞机,当然要有自己的坐标位置有自己的资源图片另外需要设置自己的矩形框,毕竟后续需要用于和其他子弹,敌机检测是否相撞需要有发射子弹的函数,那么这个子弹肯定也是一个类,子弹类在下一节需要提供一个更新飞机位置的函数,因为飞机会随着鼠标拖拽移动至于随着鼠标移动,我们只需要在主场景中重写mouseMoveEvent(QMouseEvent *event)时间即可飞机类HeroPlaneHeroPlaneHeroPlaneheroplane.h#ifndef HEROPLANE_H#def.原创 2021-02-23 21:24:54 · 562 阅读 · 0 评论 -
QT飞机大战一(游戏场景配置)
如图所示,主场景配置长这个样子大概思路是:这张图片上下可以缝合所以可以设置定时器,让这张图片循环滚动循环滚动,我们可以用两张图片来完成,使用定时器不断调用paintEventpaintEventpaintEvent来绘制设置地图类mapmapmapmap.h#ifndef MAP_H#define MAP_H#include <QPixmap>class map{public: map(QString MAP_PATH);//构造函数,传入地图图片的路径 .原创 2021-02-22 21:36:07 · 1169 阅读 · 1 评论 -
使用git上传项目到github
来这里标个⭐^_^Ⅰ.cdcdcd到上传文件夹的位置先把要上传的项目文件夹整理好,打开gitgitgit如图所示,使用cdcdcd命令索引到需要上传文件夹的位置Ⅱ.输入git init初始化然后会在你那个文件夹里生成一个叫.git.git.git的文件夹别问我有什么用Ⅲ.输入git add .注意...前面是有空格的,假如没用,再试试往...后面加个空格Ⅳ.输入git commit -m "mycommit"当然双引号里面的内容随意,没什么用Ⅴ.先在githubgithubgith原创 2021-02-13 23:08:27 · 216 阅读 · 0 评论 -
QT翻金币胜利界面(动画)的配置
任务当所有金币翻成正面时,让金币点击失效,且从上掉下图片"Succeed"下面的代码循环了202020个金币 //显示金币背景图案 for(int i=0;i<4;i++) for(int j=0;j<4;j++) { QLabel *label = new QLabel; label->setGeometry(0,0,70,70); label->setParent(this); .原创 2021-02-05 21:35:15 · 368 阅读 · 0 评论 -
QT翻金币配置游戏界面
文章目录设置标题,图标,尺寸等等设置背景窗口图片设置金币后面的透明背景设置金币类点击金币后实现上下左右的翻转首先新建这个窗口类,就叫playscenceplayscenceplayscence吧!!继承于QMainWindowQMainWindowQMainWindow设置标题,图标,尺寸等等 //初始化游戏场景 this->setFixedSize(520,688); this->setWindowIcon(QPixmap(":/res/Coin0001.png"原创 2021-02-04 21:28:36 · 328 阅读 · 0 评论 -
QT中定时器的使用
方法一使用timerEventtimerEventtimerEvent[override virtual protected] void QTimer::timerEvent(QTimerEvent *e)所以只需要在Widget.hWidget.hWidget.h里声明一下,然后去Widget.cppWidget.cppWidget.cpp实现即可具体的操作写在函数timeEventtimeEventtimeEvent中但是怎么触发时间呢??我们需要激活一下,也就是startTimer(x)原创 2021-02-04 19:40:43 · 222 阅读 · 0 评论 -
QT翻金币游戏的choosesence场景的配置
目录~设置标题,图标,尺寸设置菜单退出设置窗口背景设置20个选关按钮设计这个界面,其实也不难。设置标题,图标,尺寸首先新建类,就叫choosesencechoosesencechoosesence吧上来先设置一下标题,图标和窗口大小 this->setFixedSize(QSize(520,688)); this->setWindowIcon(QPixmap(":/res/Coin0001.png")); this->setWindowTitle("选择原创 2021-02-04 18:44:11 · 326 阅读 · 0 评论 -
QT自定义按钮类(自定义图片,形状,点击特效)
在QTQTQT中如何实现这种按钮??要求能够自定义图片,不规则大小,且点击后会有上下抖动状态,比如下面这个球那我们就封装自己的一个按钮类,就叫MyPushButtonMyPushButtonMyPushButton继承于QWidgetQWidgetQWidget,然后在MyPushButton.hMyPushButton.hMyPushButton.h中改一下,继承于QPushButtonQPushButtonQPushButtonclass MyPushButton : public QPush原创 2021-02-01 20:55:43 · 6015 阅读 · 0 评论 -
QT中QFile的读取
任务要求点击打开按钮,弹出文件对话框,选中某个文件后编辑区出现文件内容按钮连接一下信号,然后写槽函数使用QFileDialog::getOpenFileName(this,“D:\ChromeDownload”); 打开文件返回一个pathpathpath然后用QFile 类读写#include "widget.h"#include "ui_widget.h"#include <QFileDialog>#include <QFile>Widget::Widg原创 2021-01-28 23:18:24 · 459 阅读 · 0 评论 -
QT 自定义控件
自定义控件,首先创建一个设计文件点击添加文件,选择QTQTQT,选择设计师界面即可现在这个新建的叫Form1Form1Form1,通过uiuiui界面拖拽两个控件出来然后如果要在主窗口使用这个组件,可以直接在widget.uiwidget.uiwidget.ui里拖一个widgetwidgetwidget出来右键"提升为",然后输入对应的类名即可下面来实现功能,就是QSpinBoxQSpinBoxQSpinBox改变时,QSliderQSliderQSlider随着移动理论上来讲这么些就行了原创 2021-01-12 00:13:37 · 243 阅读 · 0 评论 -
QT的ListWidget与TreeWidget控件
Ⅰ.List WidgetList\ WidgetList Widget控件从uiuiui界面拉一个出来,往里面添加选项 QListWidgetItem* item1 = new QListWidgetItem("锄禾日当午"); ui->listWidget->addItem(item1);//放QListWidgetItem也行 ui->listWidget->addItem("汗滴禾下土");//直接放QString也行不过这原创 2021-01-09 23:13:24 · 474 阅读 · 0 评论 -
QT实现登录窗口布局
ⅠⅠⅠ创建基本控件在UIUIUI界面拖拽两个labellabellabel作为账号,密码拖拽两个Line EditLine\ EditLine Edit作为输入框,两个Push ButtonPush\ ButtonPush Button作为登录和退出ⅡⅡⅡ使用布局但是这样并不整齐,我们需要左右居中,上下对齐…我们从ContainerContainerContainer中拉出一个叫widgetwidgetwidget的东西然后把标签"账号"和输入框拖进这个原创 2021-01-07 23:58:33 · 1041 阅读 · 0 评论 -
QT学习笔记六(模态和非模态窗口)
模态窗口就是只能操作当前窗口,不允许操作其他窗口非模态就是都能操作任务要求建立一个菜单,设置俩个选项,一个打开模态窗口,一个打开非模态窗口那么首先先建立框架出来 QMenuBar *mBar = menuBar();//创建菜单 setMenuBar(mBar);//设置菜单,如果是new出来的一定要加,这里无所谓 QMenu *m1 = mBar->addMenu("对话框");//设置栏目 QAction *p1 = m1->addAction("模态原创 2020-12-29 22:55:59 · 467 阅读 · 2 评论 -
QT学习笔记(五)菜单栏,状态栏,文本区,窗口等
创建一个菜单MenuMenuMenuQMenuBar *mBar = menuBar();创建菜单上的选项QMenu *pFile = mBar->addMenu("文件");创建选项下的下拉选项QAction *w = pFile->addAction("新建");点了选项后触发选项作用,也就是去绑定一个槽函数上去 connect(w,&QAction::triggered, [=]() { qDebug() <&原创 2020-12-28 23:54:03 · 582 阅读 · 1 评论 -
QT学习笔记(四)Lamda表达式
通常使用connectconnectconnect函数来连接信号发射者和接收者比如下面 QPushButton *b4 = new QPushButton(this); b4->move(300,300); b4->setText("测试lamda表达式"); connect(b4,&QPushButton::clicked,this,&mainWidget::change_tosub);参数分别是,发射者,发射者类名,接收者,接收者类型但是使用Land原创 2020-12-27 22:04:24 · 343 阅读 · 0 评论 -
QT学习笔记(三)带参数的信号与重载
现在有一个主窗口MainWidgetMainWidgetMainWidget一个子窗口SubWidgetSubWidgetSubWidget首先在子窗口SubWidget.hSubWidget.hSubWidget.h中定义两个信号signals: void mysignal(); void mysignal(int , QString);可以看到信号名字一样但是参数不同,这就是重载然后子窗口通过下面的函数把这两个信号发射出去void SubWidget::sendslot()原创 2020-12-26 23:26:23 · 421 阅读 · 0 评论 -
QT学习笔记二(信号发射与槽函数练习)
目标完成两个窗口a,ba,ba,b的展示其中aaa是主窗口,bbb是aaa的子窗口主窗口上有个按钮点一下可以跳转到子窗口,子窗口同理.首先创建两个窗口类,一个叫MainWidgetMainWidgetMainWidget一个叫SubWidgetSubWidgetSubWidget首先main.cppmain.cppmain.cpp文件里还是很简单,直接展示主窗口aaa即可#include "mainwidget.h"#include <QApplication>int main原创 2020-12-26 21:19:35 · 244 阅读 · 0 评论 -
QT 学习笔记一(信号与槽函数)
一般在main.cppmain.cppmain.cpp中自动生成这样的代码通过w.show()w.show()w.show()来展示窗口但是如果想在窗口里面加一些函数,一般写在mainWidgetmainWidgetmainWidget的构造函数内#include "mainwidget.h"#include <QApplication>int main(int argc, char *argv[]){ QApplication a(argc, argv); main原创 2020-12-26 20:38:49 · 271 阅读 · 0 评论