想做一个三国杀的Qt版,pai 是继承 QPushButton类型的,shoupai[0]是pai*类型的。GameScene是继承QWidget类型的。
void wujiang::Wuzhong( pai* A[104], int* x, pai* B[104], int* y,GameScene *wid)
{
qDebug()<<"Wuzhong前的牌堆数"<<*x;
…………
connect(this->shoupai[0],&pai::clicked,this,[=](){
qDebug()<<"Wuzhong后的牌堆数"<<*x
});
…………
}
中途x的指向和值都没有改变。
但两次x不一样
第一次是正确的,第二次就完全不对了。
请教大神!谢谢。
你好,我是有问必答小助手,非常抱歉,本次您提出的有问必答问题,技术专家团超时未为您做出解答
本次提问扣除的有问必答次数,将会以问答VIP体验卡(1次有问必答机会、商城购买实体图书享受95折优惠)的形式为您补发到账户。
因为有问必答VIP体验卡有效期仅有1天,您在需要使用的时候【私信】联系我,我会为您补发。
我也在学qt,不太清楚
qt编译太阳神三国杀
编译前置条件
qt环境本文环系统包括win10(qt5.14),deepinv15(qt5.9.9)
g++编译,本文win10采用的是mingw64编译器
1.下载源码github源码,下载比较慢的去gitee找找
2.下载qt,win和linux自己操作,版本大于5.3就行
3.打开qtCreator,选中源码的.pro文件
4.开始编译
下载swig
编译swig
win10的直接下载可执行版,deepin下载源码,直接 sudo make install
利用swig产生sanguosha_wrap.cxx文件
#win10的命令,注意打开cmd的位置为swig所在目录,后面是源码的sanguosha.i位置
swig.exe -c++ -lua E:\qt\workspace\space2\QSanguosha\swig\sanguosha.i
#deepin,我直接吧刚刚编译的可执行程序拷贝到源码的sanguosha.i 同一目录下执行命令
swig -c++ -lua ./sanguosha.i
qt编译源码
1.QSanguosha.pro文件修改
#前三行
TARGET = QSanguosha
QT += network widgets sql qml quick core gui //新增一些模板
#!winrt:QT += declarative 这个注释,因为5.9以上没有这个模块了
#弟396行,win10的需要改一下
else:LIBS += -lfmodex
改为else:LIBS += -lfmodex64,这个听说是搞声音的包,具体看自己的编译器位数
2.开始编译会有很多报错,这里修改qt升级不谦容的报错
QSanguosha\src\ui目录下面 roomscene.h文件修改,做出如下修改
#ifndef Q_OS_WINRT
//#include <QDeclarativeEngine>,这三个新的qt没有了
//#include <QDeclarativeContext>
//#include <QDeclarativeComponent>
#include<QQmlEngine>
#include<QQmlContext>
#include<QQmlComponent>
#endif
#define QDeclarativeEngine QQmlEngine,下面用到了,为例避免修改去一个别名
#define QDeclarativeContext QQmlContext
#define QDeclarativeComponent QQmlComponent
上面修改完,deepin基本没啥问题,win10可能会出现有的类找不到,从报错信息点进去,少了什么类直接加,比如提示QButtonGroup未定义,就去上面加上#include<QButtonGroup>
动态库移动至编译的位置
modex在源码里面就有,freetype.dll可以直接下载也可以下载源码编译,据说是字体的依赖
win10建议直接下载dll文件gitee下载位置
deepin可以去源码下面找fmodex.so,在lib/linux里面找,找到之后打开终端执行
sudo mv fmodex.so /usr/lib #这样为了方便程序可以找到这个依赖,注意先去/usr/lib检查一下有没有同名的,避免覆盖
#freetype的安装
下载地址 https://mirror.yongbok.net/nongnu/freetype/freetype-2.10.0.tar.gz
2.解压
3.编译安装,执行命令如下
./configure
sudo make install
语言包的编译
进入源码的builds/sanguosha.ts
win10,进入qt的bin目录执行如下命令
lrelease.exe sanguosha.ts -qm sanguosha.qm
deepin 同上,使用界面操作如下
下面显示用图形操作,
复制sanguosha.qm和qt_zh_CN.qm(源文件跟目下有)到编译的exe文件处,deepin方法可执行文件同级目录
复制资源到可执行文件所在目录,
ai-selector
audio
builds
ddiy
font
hero-skin
image
lang
lib
lua
resource
rule
skins
点击release运行,win10下面如果少了什么dll就直接去qt的bin目录下面找,复制到exe文件同级就行,想要在桌面快捷启动发送一下快捷方式就行,deepin可以直接创建一个桌面快捷方式启动,不会的deep创建桌面快捷启动方式
运行效果图:
玩online花钱还不爽,找到了这个开源的项目,后面可能会用这个练练手,玩一下qt,改改什么武将之类的。
完!