原教学视频说明:https://www.bilibili.com/video/BV1g4411H78N/?spm_id_from=333.337.search-card.all.click&vd_source=442624ae292ec6b8a3ceccecdfccf14f
本文源码及素材:https://github.com/FifthIntelligence/ReturnCoin
注意:本游戏是相较于原视频游戏的一个变形,本篇记录的亮点在于:
ReturnCoin-vedio
这里呈上一张UML图,代码的话就不铺天盖地的讲解了。
4. 局部放大图(3)
(2)如果print不是乱码,但qDebug()是乱码;
试试在main函数加入这几句(重定向到print):
qInstallMessageHandler([](QtMsgType, const QMessageLogContext& context, const QString& msg) {
std::cout << msg.toStdString() << std::endl;
});
qDebug() << "你好";
(3)使用英文开发和注释,乱码终结者!
2. QT creater 11.0.2版本创建在项目中创建类后自动崩溃
这个问题我屡试不爽,暂时没有解决思路,好在这次开发中的类不多,若你有思路可以给我留言。
我的出错环境是:QT creater 11.0.2 + CMake.
3. QT添加资源后程序总是找不到,也没法使用,一定要编译一下,看到左边的qrc文件展开后有自己想要的文件后才可以
4. 关于QT新建项目显示无法找到ui_xx.h的时候,重启一下Qt就好了(新建UI类后修改完记得保存,要不就会出现这种情况)
5. 关于文件的读写,C有一套、C++有一套(ifream和ofream)、QT中也有一套(QFile),精通一套就行
6. 中途遇到了一个QPixmap图片载入的问题,耽误了不少时间,仔细一看,竟然是路径中的冒号是中文冒号
错误示范:":/res/BackButton.png"
正确示范:":/res/BackButton.png"
MarkDown编辑器都比QT编辑器更好分辨这个错误,更重要的是QT不提醒,大家一定切记切记。
7. 在重写事件时函数名称一定不能写错,要不这bug够找半天的了
8. QT没法直接给字体上色,但是可以他通过QPalete实现,代码如下:
QLabel * label = new QLabel;
label->setParent(this);
QPalette palette;
palette.setColor(QPalette::WindowText, Qt::red); // 设置字体颜色为红色
label->setPalette(palette);
QFont font;
font.setFamily("华文新魏");
font.setPointSize(20);
label->setFont(font);
QString str_1 = QString("Leavel: %1").arg(this->levelIndex);
label->setText(str_1);
label->setGeometry(QRect(30, this->height() - 50, 150, 50));
// prepare the start button audio
QSoundEffect *startSound = new QSoundEffect(this);
startSound->setSource(QUrl::fromLocalFile(":/res/TapButtonSound.WAV"));
startSound->setVolume(0.3);
startSound->play(); // play the audio
如果需要设置无限循环,则需要这样,更多内容可以在帮助文档里查找:
BGmusic->setLoopCount(QSoundEffect::Infinite);
":/res/BG.wav"
会导致音频文件无法解析,因为大小写不一样。
12. 设置背景图片的透明度,可以使用QGraphicsOpacityEffect ,这串代码只看最后三句就行
// create coin background
QPixmap pix = QPixmap(":/res/BoardNode.png");
pix = pix.scaled(pix.width()*1.5, pix.height()*1.5);
QLabel *label = new QLabel;
label->setGeometry(0, 0, pix.width(), pix.height());
label->setPixmap(pix);
label->setParent(this);
label->move(330 + i*85, 170 + j*85);
QGraphicsOpacityEffect *effect = new QGraphicsOpacityEffect(); // set label opacity
effect->setOpacity(0.6);
label->setGraphicsEffect(effect);
D:\Qt\Tools\QtDesignStudio\qt6_design_studio_reduced_version\bin
直接将它固定在电脑开始菜单上,可以随时打开:
那么问题来了,如果打开后什么文档也没有,可以试试这个方法:
遇到什么问题就在这里搜,第一手的解释信息:
2. QT快捷键:Ctrl+Alt+向上键、Ctrl+Alt+向下键分别是向上向下复制,很常用;
3. 鼠标穿透属性:WA_TransparentForMouseEvents,可以用这个在文档中搜索。
若有任何问题,欢迎评论或私信!