仿Qt开源项目,libgw! 不需要moc就可以实现信号槽!

weixin_41986620 2019-11-07 12:27:38
仿Qt开源项目,libgw! 不需要moc就可以实现信号槽!(目前只支持windows,根据开发进度支持unix、Mac、安卓)

开发IDE:windows vs2019

开源代码:github: https://github.com/nandoulong/libgw

我自己在github上建立的开源项目,属于开发初期,与qt类似。
共同点:
(1)与Qt同样的内存回收机制
(2)信号槽(貌似Qt也只有这一个新语法)
(3)只要你熟悉使用Qt,就可以无障碍使用此类库(仿),不需要看帮助文档

优势:
(1)有qt的信号槽却不需要moc。
(2)是静态库,并不需要繁多的dll。
(3)速度比qt快,效率更高。
(4)占用内存比Qt少,冗余性更低。
(5)可以跨线程使用UI !(Qt内部不允许跨线程使用UI)
(6)只需要继承GWMetaObject或者GWObject类,就可以使用信号,不需要使用宏(如Q_OBJECT)

劣势:
(1)编译器必须支持c++11标准。
(2)因为只有我一个人开发,目前只支持windows

目前类库并不完整,一个人开发势单力薄,跪求各位有兴趣的童鞋共同开发这个类库
欢迎各位大佬给点指导意见和建议,如果能够参与项目开发,请联系Email:827105513@qq.com

目前开发进度:GWCore、GWWidgets(正在进行中,只能创建界面,处理event事件,绘制功能只有一部分)

欢迎大家给与指导性意见,纯开源项目,纯属个人兴趣,欢迎有志之士加入我的开源项目中来,不管你是大佬还是萌新,可能您每个月抽出的两个小时时间,就是我们共同努力的关键!
如果要加入本开源项目的代码研发,开源项目中作者署名中也有您一个。

等框架开发的差不多了之后,我会写一个信号槽的编写文档,提供给参与开发项目的开发者帮助其理解。(其实看代码也很简单,就是有点绕,得懂c++最基本的内存机制)

目前会某种技术的合作者:。。。都需要,不管你是图像处理三维开发人工智能机器学习还是前后端!

ps:本人不会写框架,所以下载了源码的大佬不要笑话我。。。。
ps2:我知道库在不完整的情况下没人使用这个库,我也更喜欢用更全面的库进行代码开发,但求各位老铁愿意与我共同学习与进步,说不定我们共同努力的结果,最后把Qt给替代了也不是不可能
以下是示例代码:

#include "GWWidget.h"
#include "GWApplication.h"
#include "GWPainter.h"

using namespace GW;

class Signaler : public GWObject
{
public:
void emitSignal()
{
std::cout << "emit signal" << std::endl;
emit sig(1);
}
signals:
GWSignal<void(int)> sig;
};

class slotWidget : public GWWidget
{
public:
slotWidget(GWObject* parent = nullptr) : GWWidget(parent) {}
public slots:
void sltfunc(int a)
{
std::cout << "number:" << a <<",this is a slot function." <<std::endl;
}

public:
virtual void paintEvent()
{
GWPainter painter(this);
painter.save();
{
painter.setPen(GWPen(GWColor::GlobalColor::red, 5));
painter.drawRect(this->rect());
}
painter.restore();
}
};

int main(int argc, char*argv[])
{
GWApplication app(argc,argv);

Signaler signaler;

GWWidget w(&app);
w.show();

slotWidget w2(&w);
w2.resize(800,600);

GWObject::connect(&signaler, signaler.sig, &w2, &slotWidget::sltfunc);
signaler.emitSignal();

GWObject::disconnect(&signaler, signaler.sig, &w2, &slotWidget::sltfunc);
signaler.emitSignal();

return app.exec();
}
...全文
214 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_41986620 2019-11-07
  • 打赏
  • 举报
回复
引用 1 楼 轻箬笠 的回复:
替代qt这个有点远。毕竟人家已经走了快30年了。 不过楼主的愿景还是很好的。目前刚开始学习使用qt,mark下。
旧的东西总是会被新的东西所替代(新的东西想替代旧的东西千难万难,一百个新的东西能有一个能替代旧的就算是了不得的概率) 写这一门库也是有一点原因的。 第一个原因是想替代Qt需要moc工具的弊端,第二个原因是Qt库不允许跨线程使用ui,第三个原因是qt需要的插件太多,库也太多,我只想写一个精简的exe或者run程序,不需要依赖其他库(不走中大型项目路线)。 第四个原因就是中国人自己的库实在是太少了,大部分程序员都是码农,有空余时间自己写点东西的非常少。 但是时间挤一挤总是有的。。。emmm这话鲁迅说的。 我们总是沉浸在好用,能用,简单易用这一系列规则里(其实也是被公司逼得),大部分程序员知道底层开发,但是却不了解什么是底层,这也是快餐式程序员的悲哀。 我们总是觉得上班学不到东西,而找工作的时候公司招人都得会这个那个,然后就觉得自己很渣。。。没办法,我们要真的想进步,不管学什么底层开发,都是好的。。。这也是第五个原因。 以上纯属个人意见,不喜勿喷。。。
轻箬笠 2019-11-07
  • 打赏
  • 举报
回复
替代qt这个有点远。毕竟人家已经走了快30年了。 不过楼主的愿景还是很好的。目前刚开始学习使用qt,mark下。

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧