gpt4 book ai didi

c++ - CORBA : How to pass a QT object as a parameter

转载 作者:行者123 更新时间:2023-11-30 02:07:37 25 4
gpt4 key购买 nike

我是 CORBA 的新手,正在尝试为我的 QT 应用程序创建一个 Corba 接口(interface)。我检查了可以与 CORBA 一起使用的数据类型,但不确定是否可以将 QT 对象用作 CORBA 函数中的参数。我想要传递的是 QWSPointerCalibrationData。假设我有一个 CORBA 服务器代码:

//pass data.screenPoints and data.devPoints

CORBA::Boolean Calibrate( QWSPointerCalibrationData data )
{
...
}
  • 这可能吗?
  • 如果是,我如何在 IDL 文件中声明它?
  • 如果不是,我可以使用什么 CORBA 数据类型来传递这些类型的数据?

最佳答案

因为您有代码,所以这是不可能的。您必须指定与您在应用程序中使用的 IDL 类型等效的 IDL 类型,并且还提供(叹息,是的)在 CORBA IDL 中定义的那些类型与您的应用程序中定义的那些类型之间的转换函数。作为一个优势,您可以让您的应用程序对通信(或 RPC)技术的 future 变化视而不见,因为您在内部使用您自己的类型。在这种情况下,查看文档,QWSPointerCalibrationData 类型有两个数据成员:

QPoint  devPoints[5] 
QPoint screenPoints[5]

然后你应该在你的 IDL 中首先声明 QPoint 类型,然后是 QWSPointerCalibrationData(我在名称前加上 C_ 来表示 CORBA 类型):

// IDL
struct C_Point { long x; long y; };
typedef sequence<C_Point> Points;
struct C_WSPointerCalibrationData
{
Points devPoints;
Points screenPoints;
};

然后,您的服务器方法必须是:

CORBA::Boolean Calibrate( C_QWSPointerCalibrationData const& data )
{
QWSPointerCalibrationData qpcd = convert_from_CORBA_QWSPointerCalibrationData(data);
// use qpcd as usual here
}

并且您必须自己编写convert_from_CORBA_QWSPointerCalibrationData 函数(以及将该类型转换为对应的CORBA 的对应函数)。有一些工具可用于进行这种转换,但是,很遗憾,必须这样做。

关于c++ - CORBA : How to pass a QT object as a parameter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7607083/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com