• 4581阅读
  • 0回复

Qt MapX开发添加文字问题 [复制链接]

上一主题 下一主题
离线hanaper
 
只看楼主 倒序阅读 楼主  发表于: 2012-12-24
关键词: QT4.8
请教一个问题

下面是在MapX帮助文档上摘抄的一个例子,添加文字到MapX地图上面。是用VC++写的。
  1. void CSampleProjectView::FeatureFactoryTextCreate() {
  2. CMapXFeature ftr;
  3. CMapXPoint pnt;
  4. COleVariant pntVt;
  5. if(!pnt.CreateDispatch(pnt.GetClsid())) {
  6. TRACE0("Failed to Create Point object");
  7. return;
  8. }
  9. try {
  10. // Use the map's current center as the point's coordinates
  11. pnt.Set(m_Map.GetCenterX(),m_Map.GetCenterY());
  12. pntVt.vt = VT_DISPATCH;
  13. pntVt.pdispVal = pnt.m_lpDispatch;
  14. pntVt.pdispVal->AddRef();
  15. // Create a text feature and add it to layer 1
  16. ftr = m_Map.GetLayers().Item(1).
  17. AddFeature(m_Map.GetFeatureFactory().
  18. CreateText(pntVt,"Some Text"));
  19. } catch (COleDispatchException *e) {
  20. e->ReportError();
  21. e->Delete();
  22. } catch (COleException *e) {
  23. e->ReportError();
  24. e->Delete();
  25. }
  26. }




但是用Qt按照类似的方面做了一遍。在地图上并为显示出文字。
  1. bool MapXWidget::DrawText(const QString &text)
  2. {
  3. CMapXFeature* ftr;
  4. CMapXPoint* pnt = new CMapXPoint();
  5. QVariant pntVt;
  6. QVariant pntText = QVariant("Some Text");//text
  7. //if(!pnt.CreateDispatch(pnt.GetClsid())) {
  8. // TRACE0("Failed to Create Point object");
  9. // return;
  10. //}
  11. try {
  12. // Use the map's current center as the point's coordinates
  13. pnt->Set(m_map->CenterX(), m_map->CenterY());
  14. pntVt = pnt->asVariant();
  15. //pntVt.vt = VT_DISPATCH;
  16. //pntVt.pdispVal = pnt.m_lpDispatch;
  17. //pntVt.pdispVal->AddRef();
  18. // Create a text feature and add it to layer 1
  19. ftr = m_map->Layers()->Item(
  20. m_taglayer.LAYER_TRACK)->AddFeature(
  21. (IDispatch*)m_map->FeatureFactory()->CreateText(pntVt, pntText));
  22. } catch (...) {
  23. }
  24. return true;
  25. }


快速回复
限100 字节
 
上一个 下一个