
C++
文章平均质量分 63
gkzscs
熱愛創新,不走尋常路。忠於游戲,喜歡《雙截龍》、《三國志》、《仙劍奇俠傳》、《LOL》等等……
希望能找到一起玩的小夥伴~
展开
-
Qt常见问题的解决方法
使用QWidget进行视频播放,出现窗口闪烁解决方法 对QWidget进行属性设置,防止自动刷新窗口。setUpdatesEnabled(false);自定义控件OptionalButton的半透明背景影响了QPixmap问题描述 用setStyleSheet()设置OptionalButton的背景色为半透明,结果发现OptionalButton控件中的QPixmap也被半透明背景所影响。原因 重写了OptionalButton的paintEvent()方法原创 2021-10-15 15:25:06 · 122282 阅读 · 0 评论 -
C++模板类头、源文件分离方法(2)
C++模板类头、源文件分离方法(2)方法一按C++ primer中的包含模型,在定义模板类的头文件a.h中的末行添加语句:#include "a.cpp"在使用模板的测试文件test.cpp中包含头文件即可:#include "a.h"Examplesa.htemplate <typename T>class A{public: T add(T a, T b);};// Include `.cpp`#include "a.cpp"a.cpp原创 2021-07-29 10:23:20 · 128933 阅读 · 0 评论 -
QWidget获取外部控件的鼠标点击事件
背景有时候我们想自定义Qt控件(派生自QWidget),实现类似Qt::Popup属性的弹窗,同时避免Qt::Popup属性所带来的***副作用***(阴影效果、鼠标事件透传)。涉及技术事件过滤器:eventFilter()窗体属性设置:setWindowFlags()、setAttribute()(非必需,仅用于美化样式)核心代码ButtonMenu.cppButtonMenu类为自定义弹窗类,重写eventFilter()方法,实现对外部控件的鼠标点击事件的过滤与处理。原创 2021-06-04 11:37:06 · 135580 阅读 · 0 评论 -
C++判断变量/对象/枚举类型的简单方式
关键点<typeinfo>使用typeid()操作符所需包含的头文件。typeid()获取变量类型信息的操作符,其返回值类型为std::typeinfo。我们可使用typeid(n) == typeid(int)的方式来判断变量n是否为类型int。注:可以使用typeid().name()获取变量类型名,但通常都不是我们所熟知的类型名称,而且比较奇怪的字符串,比如int类型,得到的name()为i。示例#include <typeinfo>#include原创 2020-10-15 11:25:45 · 151805 阅读 · 0 评论 -
C++小程序——中綴表達式轉換爲後綴表達式
轉換步驟初始化兩個棧:運算符棧s1和操作數棧s2;從左到右掃描中綴表達式;遇到操作數時,將其壓入棧s2;遇到運算符時,比較其與s1棧頂運算符的優先級:(1)若s1為空,或棧頂運算符為左括號(,則直接將此運算符入棧;(2)否則,若其優先級比棧頂運算符的高,將此運算符壓入s1;(3)否則,將s1棧頂的運算符彈出並壓入s2,再次跳轉到步驟(4.1)與s1中新的棧頂運算符進行比較;遇到括號時;(1)若為左括號(,則直接壓入s1;(2)若爲右括號),則依次彈出s1棧頂的運算符,原创 2020-10-10 11:08:37 · 150564 阅读 · 0 评论 -
C++开发控制台小游戏之旅(2)——《五子棋》
相信每一位學編程的朋友,都曾有一顆游戲夢想,希望能親手打造出屬於自己的游戲!如果我可以創作一款結合AR技術的、如**動漫《游戲王》**中那樣進行決鬥的游戲,該有多好!游戲背景《五子棋》這款游戲,從我讀小學起就經常在玩,與小夥伴們一起在課餘時間一決高下,不亦樂乎!曾經的美好,只留下回憶,但我相信我的人生始終會與快樂相伴……如今我萌發心思,欲抽空發展一下愛好,自己動手逐步打造出一款可玩的小游戲,同時也為廣大游戲編程愛好者們提供略微的參考,一起爲了夢想而前行!本游戲采用純C++語言進行編寫,可在Wi.原创 2020-09-29 11:55:12 · 152280 阅读 · 1 评论 -
C++开发控制台小游戏之旅(1)——《伏魔记》
相信每一位學編程的朋友,都曾有一顆游戲夢想,希望能親手打造出屬於自己的游戲!如果我可以創作一款結合AR技術的、如**動漫《游戲王》**中那樣進行決鬥的游戲,該有多好!游戲背景《伏魔記》曾是一款可在步步高電子詞典上運行的RPG游戲,我在上小學六年級的時候對其愛不釋手,日夜把玩,終於通關,仍意猶未盡。如今我萌發心思,欲抽空發展一下愛好,自己動手逐步打造出一款可玩的小游戲,同時也為廣大游戲編程愛好者們提供略微的參考,一起爲了夢想而前行!本游戲采用純C++語言進行編寫,可在Windows控制臺或Lin.原创 2020-09-23 15:58:36 · 151930 阅读 · 3 评论 -
Qt 5.7之后的版本如何调试源码
Qt 5.7之后的版本如何调试源码下载Qt源码和调试信息安装Qt源码在安装Qt组件时,勾选source进行安装。安装完成后,还需要在Qt Creator中进行配置。依次点击菜单栏的工具——选项——调试器——概要——添加Qt源码,将安装的Qt路径下的Src目录加入进去即可,如C:\Qt\Qt5.12.6\5.12.6\Src。安装调试器需要自己下载Windows10 SDK进行安装,并在Qt Creator菜单栏里,依次选择工具——选项——Kits——Debuggers,添加Windows Ki原创 2020-09-18 15:48:44 · 151308 阅读 · 2 评论 -
C++模板类/函数,将头文件与源文件分离
C++泛型编程将包含模板的源文件与头文件分开关键在于模板显式实例化。解决方案模板函数分离源文件按一般方式编写.h和.cpp文件,但注意添加template <typename T>的声明;在.cpp文件末尾,添加模板显式实例化代码,如:// 显式实例化,注意,`template`之后没有`<>`,若添加则会报错!// 每种将被使用的类型,均需要进行显式实例化template void A::show(int &&);template voi原创 2020-09-18 11:46:11 · 159201 阅读 · 3 评论 -
屡试不爽的Qt中文乱码、编译报错的解决方案
屡试不爽的Qt中文乱码、编译报错的解决方案只需要3步,即可轻松解决Qt源码中包含中文所引发的编译报错、中文乱码等问题。打开Qt Creator,设置文件编码方式为UTF-8 目前存在BOM则保留(这一步骤似乎影响不大,可有可无);在包含中文字符的源码文件的开头(第一行),添加如下代码:#pragma execution_character_set("utf-8")将包含中文字符的源码文件,另存为UTF-8带BOM编码格式(个人推荐使用Sublime Text编辑器进行文件编码方原创 2020-09-09 09:36:55 · 163229 阅读 · 10 评论 -
新手如何在Git Hub上学习开源项目+社交
新手如何在Git Hub上学习开源项目+社交背景Git Hub作为一个专业的开源网站,基于版本控制软件Git来实现各项功能,对于程序员来说是交流经验与学习开源项目的天堂。但由于国内外的学习方式、编程思维均存在较大差别,导致至今仍有很多国人对于Git Hub的使用感到不解。对于如何从Git Hub上寻找符合需求的开源项目并进行阅读学习,如何为他人的项目贡献自己的力量,以及如何与其他程序员进行交...原创 2019-12-17 16:07:16 · 165733 阅读 · 3 评论 -
如何有效地设置QPushButton的背景
如何有效地设置QPushButton的背景常见问题使用QPalette设置QPushButton的背景,发现未生效。Example// 获取按钮的画刷QPalette pal = ui->pushButton->palette();// 使用颜色对话框选取颜色QColor color = QColorDialog::getColor(color);if (!color....原创 2019-10-09 13:39:33 · 152180 阅读 · 0 评论 -
DirectSound回放
DirectSound回放的基本流程1.创建DirectSound对象;2.设置设备的协作等级;3.创建缓冲区并设置播放格式;4.调用播放和控制函数实现声音的播放和控制。详细步骤:1.枚举系统输出声音设备,调用DirectSoundEnumerate函数;2.创建DirectSound对象,调用全局函数DirectSoundCreate8可以创建一个IDirectSou原创 2017-01-03 16:13:11 · 39337 阅读 · 0 评论 -
DirectSound录音的基本流程
DirectSound录音的基本流程1.枚举系统录音设备,调用DirectSoundCaptureEnumerate函数;2.创建设备对象,调用DirectSoundCaptureCreate8或DirectSoundFullDuplexCreate8函数可直接创建;3.获取录音设备的性能,调用IDirectSoundCapture8::GetCaps方法;4.创建录音缓冲区,调用原创 2017-01-03 16:47:34 · 39868 阅读 · 0 评论 -
DateTime结构体与字符串相互转换的代码实现
问题描述 自定义一个DateTime结构体,代码如下://定义DateTime结构体struct DateTime{ short year; short month; short day; short hour; short minute; short second;};如何将DateTime对象转换成形如“YYYY-MM-DD hh:mm:ss”的字符串格式,...原创 2018-10-12 08:13:28 · 39461 阅读 · 0 评论 -
C++宏编程技巧
下面的代码并非按照规范格式来写,仅作示范用途。常用符号##连接符,可将多个标识符拼接起来,组成一个完整的标识符。//定义宏,用来打印整型变量#define PRINT(x) printf("%d\n", a##x)int a1 = 1;int a2 = 2;PRINT(1); //等同于printf("%d\n", a1),输出1PRINT(2); //等同于prin...原创 2018-10-05 10:36:01 · 49157 阅读 · 4 评论 -
Linux下标准I/O缓冲机制
平台:Ubuntu操作系统编译器:g++首先让我们看一段代码:#include <iostream>#include <unistd.h>using namespace std;int main(){ for (int i = 0; i < 3; ++i) { cout << "hello " << i; //...原创 2018-10-12 22:29:06 · 151105 阅读 · 0 评论 -
C++转义字符——解决恼人的协议头尾16进制问题
定义转义字符是C语言中表示字符的一种特殊形式。通常使用转义字符表示ASCII码字符集中不可打印的控制字符和特定功能的字符。示例常见转义字符及对应ASCII码 \a 响铃(BEL) \b 退格(BS) \f 换页(FF) \n 换行(LF) \r 回车(CR) \t 水平制表符(HT) \v 垂直制表符(VT) \\...原创 2018-11-02 18:06:36 · 151556 阅读 · 0 评论 -
关于Qt中setStyleSheet()易踩的坑——样式覆盖
关于Qt中setStyleSheet()易踩的坑——样式覆盖问题描述在Qt中,很多时候我们都需要使用样式表来设置控件样式,如颜色、边框、字体等。然而,有时候设置的样式却没有生效,或者设置多个样式却只展现出一个。案例我自定义了一个继承于QLabel的类MyLabel,并希望创建其对象时,控件就默认显示绿色背景及红色文字。代码如下:MyLabel.h#ifndef MYLABEL_H...原创 2019-08-26 10:38:39 · 165863 阅读 · 3 评论 -
如何有效地设置QTextEdit的背景
如何有效地设置QTextEdit的背景易踩的坑问:为何按照方案来做,但背景样式却不生效?答:可能原因较多,这里列出几种。父类样式覆盖了本控件的样式。此时可设置本控件的背景为自动填充(不继承于父类):ui->textEdit->setAutoFillBackground(true);设置画刷样式时,ColorRole设置有误。通常网上搜索到的都是使用QPalette:...原创 2019-09-04 13:49:59 · 157102 阅读 · 2 评论 -
递归
递归定义:一个函数直接或间接地调用自己。应用:汉诺塔、阶乘、累加汉诺塔规律:if (n > 1){ 先把A柱子上的前n-1个盘子从A借助C移到B; 将A柱子上的第n个盘子直接移到C; 再将B柱子上的n-1个盘子借助A移到C;}程序示例:#include using namespace std;int tower原创 2016-06-08 15:31:56 · 38908 阅读 · 0 评论