如何传递一个QT对象作为参数
CORBA : How to pass a QT object as a parameter
我是CORBA的新手,正在尝试为我的QT应用程序创建CORBA接口。我检查了可以与CORBA一起使用的数据类型,但我不确定是否可以将QT对象用作CORBA函数中的参数。我想传递的是QWSPointerCalibrationData。假设我有一个CORBA服务器代码:
//pass data.screenPoints and data.devPoints
CORBA::Boolean Calibrate( QWSPointerCalibrationData data )
{
...
}
- 这可能吗?
- 如果是,如何在IDL文件中声明? 如果没有,我可以使用什么CORBA数据类型来传递这些类型的数据?
因为您有代码,所以这是不可能的。您必须指定与您在应用程序中使用的类型相等的IDL类型,并且还提供(唉,是的)CORBA IDL中定义的类型与您的应用程序中定义的类型之间的转换函数。作为一个优势,您可以使应用程序对通信(或RPC)技术的未来变化视而不见,因为您在内部使用自己的类型。在本例中,查看文档,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对应类型的相应函数)。有一些工具可以完成这种转换,但是,很遗憾,这是必须完成的。
相关文章:
- 如何在QT Creator上将QWidget声明为继承类的对象
- 如何在qt中将信号和插槽与另一个对象连接 --解决了
- Qt:从另一个窗口访问公共对象
- 通过插槽和信号在不同线程中的两个qt对象之间进行通信
- 如何在qt中将对象添加到现有布局中?--已解决
- 如何注册Qt C++对象以在QML中使用它
- 如何在Qt中连接来自不同窗口的两个对象?
- 将对象传递给多线程对象 Qt
- Qt:如何通知对象已建立涉及它的信号槽连接
- Qt访问每个类中的查看器对象?
- Qt调试:我如何知道QCoreApplication::notifyInternal2正在向哪个对象发送消息?
- Qt c++不会为所有对象调用move_slot.为什么?
- Qt对象所有权内存泄漏
- CMake + Qt,moc 编译失败,无法实现 QMetaObject 方法(编译器找不到基本 ui 对象的标头?
- 在Qt中执行完所有插槽后,如何释放对象
- 两个对象QT之间的示例插槽/信号
- 使用派生的类对象 Qt 访问基类信号
- 堆栈对象Qt信号和参数作为参考
- 重用QProcess对象(Qt 4.8)
- QWebEngine & QWebChannel:传输对象"qt.webChannelTransport"在页面重新加载后消失