小编Jay*_*tor的帖子

在GTK中,"信号"和"事件"之间有什么区别?

我正在尝试使用GTK,但我发现信号文档(https://developer.gnome.org/gobject/stable/signal.html)很难理解.

似乎"信号"和"事件"之间存在差异.例如,Widget的"事件" - 信号的文档(https://developer.gnome.org/gtk3/stable/GtkWidget.html#GtkWidget-event)说

GTK +主循环将为每个传递给窗口小部件的GDK事件发出三个信号:一个generic :: event信号,另一个更具体的信号,与所传递的事件类型相匹配(例如"按键事件"),最后一个通用的"事件后"信号.

所以在我看来,GDK使用"事件",而GTK +使用"信号".也许事件只是包含在信号中,反之亦然?或者他们是完全不同的东西?

我对上述引用的理解:当按下某个键时,会触发GDK事件.此GDK事件调用窗口小部件的回调函数(不是程序员干扰).然后,回调函数依次发出三个信号::event,key-press-event并且event-after一个接一个地发出.作为程序员,我可以通过编写回调函数来拦截这些信号.如果第一个::event信号的回调返回TRUE,那么第二个key-press-event信号不会被触发,否则就是.第三个event-after信号总是被触发.

我的理解是否正确?

此外,在文档中,有时信号由双冒号(::event)前置,有时它们不是(key-press-eventevent-after).有什么不同?双结肠是什么意思?

gtk gobject

4
推荐指数
1
解决办法
1903
查看次数

如何阅读基于Tokio的Hyper请求的整个主体?

我想使用Hyper的当前主分支编写服务器,该分支保存由POST请求传递的消息,并将此消息发送到每个传入的GET请求.

我有这个,大多是从Hyper示例目录中复制的:

extern crate futures;
extern crate hyper;
extern crate pretty_env_logger;

use futures::future::FutureResult;

use hyper::{Get, Post, StatusCode};
use hyper::header::{ContentLength};
use hyper::server::{Http, Service, Request, Response};
use futures::Stream;

struct Echo {
    data: Vec<u8>,
}

impl Echo {
    fn new() -> Self {
        Echo {
            data: "text".into(),
        }
    }
}

impl Service for Echo {
    type Request = Request;
    type Response = Response;
    type Error = hyper::Error;
    type Future = FutureResult<Response, hyper::Error>;

    fn call(&self, req: Self::Request) -> Self::Future {
        let resp = match …
Run Code Online (Sandbox Code Playgroud)

rust hyper rust-tokio

3
推荐指数
2
解决办法
2740
查看次数

标签 统计

gobject ×1

gtk ×1

hyper ×1

rust ×1

rust-tokio ×1