StupidBeauty
Read times:339Posted at:Mon Jul 4 18:43:24 2011
- no title specified

Wt3.1.9文档翻译:Wt::JSignal< A1, A2, A3, A4, A5, A6 >类模板参考,Wt::JSignal< A1, A2, A3, A4, A5, A6 > Class Template Reference

详细描述

template<typename A1 = NoClass, typename A2 = NoClass, typename A3 = NoClass, typename A4 = NoClass, typename A5 = NoClass, typename A6 = NoClass>
class Wt::JSignal< A1, A2, A3, A4, A5, A6 >

这是一个用来从 JavaScript 中调用C++的信号。

JSignal 、与 EventSignal 类似,提供咯从JavaScript 向C++代码通信的事件。然而 ,它并没有与内置的事件绑定起来 。而是在自写的JavaScript 代码中使用Wt.emit()这个JavaScript 函数来发射

这个信号是以一个 WObject 的作用 域内的一个唯一的名字 或者是 一个唯一的全局名字 (在你的 WApplication 中声明那个信号) 来标识的

这个信号支持多达6 个参数。这些参数的 值可在JavaScript 函数Wt.emit() (或者是已过气的全局函数WtSignalEmit())中指定

示例代码

class MyWidget : public WCompositeWidget

{

public:

MyWidget()

: doSome_(this, "doSome")

{

...

}

JSignal<std::string, int>& doSome() { return doSome_; }

private:

JSignal<std::string, int> doSome_;

...

};

下面的JavaScript 代码会为一个叫做element 的对应于一个MyWidget 类的部件的DOM 元素发射上面的信号

Wt.emit(element, 'dosome', 'foo', 42);

element 可以是以下东西之一:一个 DOM元素 一个 WObject 对象标识符 ;常量'Wt' ,它是'WtWApplication::instance()-> id() '的别名 。那些JavaScript 参数 (ax)与C++的Ax 类型的变量之间的转换是使用 boost::lexical_cast<Ax>(ax) 来进行的。

你可以使用createCall()方法来让那个信号自己来为你生成JavaScript 调用

doSome_.createCall("'foo'", "42");

createCall()生成的JavaScript 可能会被信号的每次连接或断开动作影响 。在实际使用过程中,你应当在一个部件内部使用 JSignal ,并且只在你将内部的信号 槽与信号连接咯之后才调用 createCall()

还可以将一个原始的JavaScript 事件以WMouseEventWKeyEvent 的类型作为最后一个参数传递出去。在那种情况下,Wt.emit()中的第二个参数必须是一个指示JavaScript 事件和事件目标的对象

看看下面这个信号声明

JSignal<std::string, int, WMouseEvent> doSome();

然后,下面的JavaScript 调用就是合适的

Wt.emit(Wt, {name: 'dosome', event: event, eventObject: object}, 'foo', 42);

createEventCall()方法可以针对这个JavaScript 方法调用的变种来使用。

由于从JavaScript 到C++的转换是使用boost::lexical_cast<T>(arg)来进行的,所以你可以通过为你的自定义类型实现c++输入流操作符 operator<< (std::istream&, T& t) 的方式来为自定义类型提供支持。

参考

WWidget::jsRef() WObject::id()

Your opinions
Your name:Email:Website url:Opinion content:
- no title specified

HxLauncher: Launch Android applications by voice commands

 
Recent comments
2017年4月~2019年4月垃圾短信排行榜Posted at:Thu Sep 26 04:51:48 2024
Qt5.7文档翻译:QWebEngineCookieStore类,QWebEngineCookieStore ClassPosted at:Fri Aug 11 06:50:35 2023盲盒kill -9 18289 Grebe.20230517.211749.552.mp4