qt中调用mapx地图时,出现QAxBase::qt_metacall: Object is not initialized, or initializatio

白日_焰火 2019-03-15 03:54:18
在Qt里调用mapx控件,想绘制圆形的区域,但是在运行时异常结束。应用程序输出 显示
QAxBase: Error calling IDispatch member GeoSet: Exception thrown by server
Code : 1011
Source : MAPX50
Description: ??: ????????????????????
Help : C:\PROGRA~2\MapInfo\MAPX5~1.0\MAPX50.HLP [400011]
Connect to the exception(int,QString,QString,QString) signal to catch this exception
before : 55
after : 56
QAxBase::qt_metacall: Object is not initialized, or initialization failed
D:\sogou_pinyin\SogouInput\Components\----------------------------------------------
程序异常结束。

调试时,发现程序中断在如下代码中的 qt_metacall(QMetaObject::InvokeMetaMethod, 9, _a);

inline void CMapXPoint::Set(double X, double Y)
{
void *_a[] = {0, (void*)&X, (void*)&Y};
qt_metacall(QMetaObject::InvokeMetaMethod, 9, _a);
}


整个函数的代码如下:

CMapXPoint *pt;
CMapXFeature *drawCircular;
CMapXLayers *layers;
CMapXLayer *layer;
CMapXStyle *style;

pCMapFeaFactory = map->FeatureFactory();
layers = map->Layers();

qDebug()<<"before : "<<map->Layers()->Count();

bool flag = false;
for(int i=1;i<=layers->Count();i++){
layer = layers->Item(i);
if(layer->Name() == "DetectionRange"){
flag = true;
break;
}
}
if(flag == false){
CMapXLayer *lyr = map->Layers()->CreateLayer("DetectionRange");
map->Layers()->SetAnimationLayer(lyr);
}
layer = map->Layers()->Item("DetectionRange");

qDebug()<<"after : "<<map->Layers()->Count();

pt = drawCircular->Point();
pt->Set(104.65,31.5124);

style->SetRegionBackColor(FillPatternConstants::miPatternNoFill);
style->SetRegionBorderColor(ColorConstants::miColorRed);
style->SetRegionBorderStyle(PenStyleConstants::miPenSolid);
style->SetRegionBorderWidth(2);
style->SetRegionPattern(FillPatternConstants::miPatternNoFill);

double v = 10.0;
int vv = 1024;

drawCircular = pCMapFeaFactory->CreateCircularRegion(CircleTypeConstants::miCircleTypeScreen,
pt->asVariant().value<IDispatch*>(),10,
v,vv,style->asVariant());
layer->AddFeature(drawCircular->asVariant().value<IDispatch*>());
layer->Refresh();
...全文
1688 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
superboylin 2021-03-05
  • 打赏
  • 举报
回复
求教怎么解决的
Nie3304 2021-03-01
  • 打赏
  • 举报
回复
您好 您这个问题怎么解决的, 可以告诉下吗?
内容概要:本文围绕“基于多面体聚合与闵可夫斯基和的电动汽车可调能力评估研究”展开,系统提出一种基于多面体建模与几何运算的聚合方法,用于量化大规模电动汽车集群的可调节能力。通过构建单车充电可行域的凸多面体表示,并利用闵可夫斯基和实现群体调控潜力的数学聚合,形成统一的等效灵活资源集合,从而精确刻画电动汽车集群在间与功率维度上的整体调节边界。该方法结合Matlab代码实现,支持对聚合结果的可视化呈现与边界分析,为电力系统的需求响应、虚拟电厂运营及分布式能源调度提供了高精度建模工具。研究强调科研应兼顾严谨逻辑与创新思维,倡导借助YALMIP等优化工具提升建模效率与求解可靠性。; 适合人群:具备电力系统分析、凸优化理论或运筹学背景,从事新能源并网、电动汽车调度、综合能源系统等方向的研究生、科研人员及工程技术人员。; 使用场景及目标:①掌握多面体建模与闵可夫斯基和在电力系统灵活性聚合的数学原理与实现方法;②学习利用Matlab完成电动汽车集群可调能力的建模、聚合与可视化分析;③应用于虚拟电厂资源聚合、需求响应潜力评估、配电网柔性负荷调控等实际场景的建模与优化决策。; 阅读建议:建议读者结合文Matlab代码逐模块复现算法流程,重点理解多面体定义、约束处理及闵可夫斯基和的近似计算实现,同参考提供的YALMIP工具包资源,深入掌握优化建模技巧,以全面提升对复杂系统聚合建模的能力。

703

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder ActiveX/COM/DCOM
社区管理员
  • ActiveX/COM/DCOM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧