月度归档:2018年11月

Qt 注册自定义数据类型提供信号和槽函数传递参数

Qt 信号和槽函数参数只能是基于 Qt 的基础类型的,比如 QString、int、bool 等,如果想传递自定义类型默认情况下是行不通的。要想在 Qt 的信号和槽函数之间传递自定义类型,可以先将自己的自定义类型注册一下,使用如下代码:

Q_DECLARE_METATYPE(nim::DocTransInfo)

nim::DocTransInfo 为你的自定义数据结构,我这里是一个结构体。当需要传递这个数据时,不是直接使用,而是用 QVariant 来包装一下,信号和槽函数则直接使用 QVariant 类型的数据作为参数传递。首先我们连接信号和槽:

connect(this, SIGNAL(AddDocItemSignalNew(QVariant)), this, SLOT(AddDocItemNew(QVariant)), Qt::QueuedConnection);

信号和槽函数的声明如下:

signals:
    void AddDocItemSignalNew(QVariant variant);
private slots:
    void AddDocItemNew(QVariant variant);

当要发起信号的时候,把我们要传递的这个数据包装到 QVariant 中,然后传递给信号函数就可以了。如下所示:

QVariant data;
data.setValue(file_info);
emit AddDocItemSignalNew(data);

槽函数接受到信号时可以像如下方法一样解析参数出来使用:

void MainForm::AddDocItemNew(QVariant variant)
{
    nim::DocTransInfo doc_info = variant.value<nim::DocTransInfo>();
    // ....... 其他代码
}

这样包装后,我们就可以使用 Qt 的信号和槽功能来传递自定义数据结构了。

利用 NvAPI 设置数字振动数值

开始是一位朋友有这个需求,他给了我一个英伟达官网的开发包,名字是:R410-developer.zip(诸位可以自己到英伟达官网下载),里面提供了一些示例,包含自定义分辨率、显示器颜色设置等,但是显示器色彩设置的例子一致没有跑通,而且我也没有找到哪个参数是可以设置数字振动值的,所以憋屈了很多天。但直到看到了一个 AHK 版本实现的设置工具通过代码发现,其实实现方法是通过 nvapi.dll 动态库导出的一个查询函数地址的方法,将指定接口导出来执行具体业务。再加上在 github 上搜索的各类示例,最终实现了这个功能,下面详细介绍实现步骤。

继续阅读

svn 项目迁移到 git 保留 commit 记录

最近迁移了两个 SVN 项目到 Gitlab 上,唯一的目的就是想把提交记录保存下来,至于谁提交的无所谓,只希望能在看不懂一些代码的时候能追溯回去看看当时为什么这样修改。随后查看了很多资料,初试的时候遇到了很多问题,最终使用如下命令完美解决:

git svn clone https://mysvn/demo --no-metadata --no-minimize-url demo

参考资料:https://blog.csdn.net/xueshanhaizi/article/details/54929365