编辑器链接功能及其编程

在某些情况下,我们需要将两个或多个编辑器链接在一起协同操作,例如,文本编辑器和图形编辑器联动,在文本编辑器中选择文本时,在图形窗口内高亮显示对应的内容,或在图形窗口内的操作反映到文本编辑器中。SiPESC平台提供了两个或多个编辑器联动的功能,通过简单的接口即可实现编辑器之间的联动。


编辑器链接接口

要为编辑器添加联动功能,只需要在编辑器的实现类中添加如下信号和信号槽即可:

  signals:
    void linkDataChanged(const EditorLinkData&);
  private slots:
    void onLinkDataChanged(const EditorLinkData&);

在编辑器实现的头文件中添加上面的信息,然后实现信号槽功能,该编辑器就可以支持联动功能。编辑器之间联动的数据是通过EditorLinkData扩展传递的,通过定义联动编辑器可以解释的属性数据,一个编辑器发送linkDataChanged信号,将发生改变的联动数据传递给其他编辑器的onLinkDataChanged信号槽中,接受信号的编辑器通过解析这些数据并作出响应,这样就实现了编辑器之间的联动。由于采用了信号和信号槽机制,一个编辑器可以同时与多个编辑器联动,联动的编辑器之间形成复杂的网状结构,一个编辑器的改动同时反映到多个编辑器中,可以完成一些复杂的联动操作。

编辑器链接界面

要使用编辑器联动功能,首先需要打开至少两个可以联动的编辑器,然后选择编辑器工具条中的“编辑器链接”功能,此时会弹出如下的对话框:

在这个对话框中,选择左侧的想要联动的编辑器,然后点击中间的向右的按钮,即可将选择的编辑器链接在一起,实现联动功能。