- 主题:Qt为人称道的信号槽连接机制,比起Delphi的事件和事件处理函数
脑波离现实使用还十万八千里。
操作机器人,可以用手柄和语音,这两个非常成熟。
【 在 z16166 的大作中提到: 】
: 以后都是语音、脑波吧
: 不过如果语音、脑波输入通道坏了的话,还是要有fallback的输入通道的
: 输出则一定是GUI
: ...................
--
FROM 27.152.53.*
然而。。Qt 也是支持的。
Qt 的 signal/slot 是上层的包装。底层实际上也是事件机制。不信你阅读一下 QWidget 的:
paintEvent()
mouseEvent()
keyPressEvent()
timeEvent()
这些对应的就是你说的事件处理函数。
如果是子控件,也可以这样写:
private slots:
void on_button1_clicked();
on_ + 控件名 + 事件名
不用手动 connect().
Qt 提供了更多样的选择。signal/slot 其实是设计模式中观察者(事件订阅)模式的具体实现,可解耦,链式处理。比 delphi 简单的事件处理函数高级多了。
delphi
【 在 ooolinux 的大作中提到: 】
: Qt足够强大,类库也堪称好用,但是它为人称道的信号槽连接机制,比起Delphi的事件和事件处理函数就差了几条街了。
: VCL类库中事件就是一个函数指针,自然优美,这得益于Object Pascal语言的特性以及VCL的架构。
: 比如Button1的OnClick事件,被指定了Button1Click事件处理函数之后,当鼠标点击Button1时,经过Windows内核和VCL架构的消息处理与传递,最终调用了Button1Click函数,看起来就是这么简单。
: ...................
--
修改:hgoldfish FROM 27.152.53.*
FROM 27.152.53.*
对啊。signal/slot 支持跨线程,现在还支持跨 c++ 和 js(qml). 这是个高级货。
【 在 chaobill 的大作中提到: 】
: 也就是回调函数不支持跨线程,事件支持是么?
--
FROM 27.152.53.*
也不是。是 Qt 从 .ui 文件生成的代码里面有一句话,
connectSlotsByName()
自己在构造函数调用一下也行。
这些都已经被封装到了 Qt 框架了。
无论你怎么说,像 Qt 这种已经实现动态布局系统的都比 delphi 那一套二十年前的先进几百倍。
如果我是 pascal 粉丝。我给大家推荐的话,一定是多说说 pascal 可以写简洁的服务端程序。
【 在 ooolinux 的大作中提到: 】
: 不用手动 connect()的,其实是编译器帮你connect
--
FROM 27.152.53.*
那个是静态布局。
我说的是动态布局。这个是高端技术。有点类似于电脑游戏的那种动态界面。
在 Web 上面使用非常普遍。比如某个元素的位置、颜色、效果等等,随着用户上滑下滑而变化。
Qt 通过 QML 可以实现了。
【 在 ooolinux 的大作中提到: 】
: Delphi现在也有各种布局
--
FROM 27.152.53.*
这个各种 GUI 框架都有。这种布局的坏处是静态的。不会随着场景、状态而变化。
动态布局就非常牛逼,甚至能够做到根据鼠标的位置来重新计算各个控件的位置。
其技术原理是,
传统的静态布局,每个属性是个值。
而动态布局,属性允许设置成函数,当函数依赖的状态发生变化时,属性也会跟着变化。
这是高端货。需要编程语言级别的配合。
【 在 ooolinux 的大作中提到: 】
: 我以为你说的是布局器,比如水平布局、垂直布局、栅格布局、流式布局等
--
FROM 27.152.53.*
别这么说啊。
灌个水还要灌出喜怒哀乐出来。
这是水灌得少了。
【 在 z16166 的大作中提到: 】
: 他是没有喜怒哀乐的Delphi/BCB吹。别人再喷,我也从没看到他有丝毫的情绪波动,哈哈
: 所有的帖子都没有语气、情绪,这有点老式的bot的特征。现在的AI bot是可以预设角色和行为风格的。
--
FROM 117.28.128.*
可以自我洗脑的啊。比如我现在看到有人开始对我破口大骂我就很开心。这肯定是被我说破防了。别人的失败就是我的快乐!
哪,灌水呢就是图个快活。不快活灌什么水。
【 在 z16166 的大作中提到: 】
: 只要是个人都会有喜怒哀乐的,会有情绪的。尤其是长期灌水的。
: 你说的反而违反常识。也许楼主是个极端的例外
--
修改:hgoldfish FROM 117.28.128.*
FROM 117.28.128.*
错。现代的 GUI 仍然是这样设计的。
实际上,对于我们这些老家伙而言,近二十年的软件并没有太大的变化。
除了最近 AI 突飞猛进之外,整个软件栈感觉就停留在 2015 年左右。而桌面软件则停留在 2005 年左右。
【 在 fafe 的大作中提到: 】
: 好复古的讨论啊
: 可惜这样的知识,以后不太需要了
: 时代变了
: ...................
--
修改:hgoldfish FROM 112.51.42.*
FROM 112.51.42.*