c++ - Wt 从 http 响应回调添加新的小部件

标签 c++ wt

我正在尝试从 http 客户端获取回调向 root() 添加一个小部件。当我点击菜单项时,我发送获取请求,并根据响应添加一个小部件。

我的点击处理程序:

Wt::Http::Client *client = new Wt::Http::Client(Wt::WApplication::instance());
client->done().connect(boost::bind(&RequestBase::handleHttpResponse, this, _1, _2));
client->get("url...");

以及回调方法:

void RequestBase::handleHttpResponse(boost::system::error_code err, const Wt::Http::Message& response) {
    stringstream ss;
    ss << "test" << i++;
    new Wt::WText(ss.str(), root());
    Log(ss.str());
}

当我第一次单击菜单项时,我在控制台中看到了日志消息,但浏览器中没有任何反应。当我再次点击它时,“test0”文本出现在浏览器中,“test1”出现在控制台中。第三次,“test1”出现在浏览器中,“test2”出现在控制台等中。如果我将 new Wt::WText("test", root()); 添加到点击处理程序,文本在点击后立即显示在浏览器中。我怎样才能让它发挥作用?

最佳答案

启用 Wt 的服务器推送机制。在构造 WApplication 时调用 WApplication::enableUpdates(),然后在每次修改不是由客户端事件触发的小部件树后调用 WApplication::triggerUpdate()。例如,鼠标单击是客户端事件,由于客户端上的某些操作,不会调用 handleHttpResponse 回调。

关于c++ - Wt 从 http 响应回调添加新的小部件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23499865/

相关文章:

android - QLabel透明背景

c++ - 展开时带箭头的 CTreeCtrl

mysql - 使用 Wt::Dbo 导致 MySQL 准备语句泄漏

c++ - 如何将 Wt 安装到没有 "fatal error: Wt/WApplication: No such file or directory"的自定义文件夹中

c++ - (boost::&& std::) 绑定(bind)仅在参数太少的 MSVC 上失败

c++ - Wt 教程(c++ Web 开发)

c++ - 处理多个颠覆项目之间的关系

python - Boost Python找不到dll文件

c++ - 在 C++ 中循环遍历 .txt 文件的行

c++ - 将 boost::bind 成员函数传递给 wt 监听器。我做错了什么?