Qt+ArcGIS Engine 10.1 開發(二)


  1. ArcGIS Engine+Qt(GUI開發,使用Qt提供的方法)

上面的這種方法,因為不能調試,所以我相信你不會喜歡,其實我也不喜歡,那我們就用這種方式吧,這種方式不需要上面提到的dll,因此也不需要額外的配置。Qt為大家提供了QAxWidget這個類,這個類用來將作為我們AxtiveX控件的容器,關於更多的信息可以在幫助中找到,如下圖:

 

  1. 一般流程

    1. 聲明

使用種做法的大體流程,聲明一個    QAxWidget 類型的變量,如:QAxWidget* m_pAxMapWidget;

  1. 實例化

m_pAxMapWidget = new QAxWidget(this);

  1. 關聯ActiveX組件

    m_pAxMapWidget->setControl("{C552EA94-6FBB-11d5-A9C1-00104BB6FC1C}"); //GUID

  1. 顯示

通過addWidget()方法將我們的ActiveX組件就可以顯示出來,如:

pV = new QVBoxLayout;

    pV->addLayout(pH);

    pV->addWidget(m_pAxMapWidget);

  1. 使用Qt設計師

我這個人比較懶,尤其是在做界面這塊,也沒什么藝術細胞,記得在MFC中我也是這么說,因為我是受NET影響很大的一個人,總喜歡拖控件到界面上去,在Qt中借助Qt設計師我們也可以這么做。

  1. 界面布局

打開Qt的設計師,放幾個布局控件上去,然后在右邊的Widget Box中找到

QAxWidget,並拖放到界面上,如下圖:

 

拖放之后的界面如下:

 

在這個剛拖放的控件上右鍵,選擇設置控件,出現下面的選擇框(跟MFC中的操作一樣了吧)

因為這種方法使用了QAxWdiget,所以要早附加依賴項中添加QAxContainerd .lib,如下圖:

  1. 添加代碼

在添加代碼之前,我們用下面的圖來看一下Qt中這個的界面如何和程序掛接起來的(如果看不懂,請用VS跟蹤,用程序去跟蹤,了解這個流程對我們以后的學習是有幫助的,如果不想使用,當然可以自己去寫,我不是說了,我是懶人么),知道了這個流程,我們就知道如何添加代碼了。

圖來自:http://blog.csdn.net/koilin/article/details/7752474

 

不知道為什么自動生成的代碼中AxtiveX的guid並沒有關聯上,我們只需在SetupUi這個函數中添加下面紅框中的代碼即可:

 

在Ui_QtMapAxtiv(對應上圖的Ui_MainWindow)的那個頭文件中頭文件中分別添加三個控件的指針變量,如下圖:

在QtMapAxtive(對應上圖的MainWindow)類中也添加三個指針變量和一個給ToolBar上添加按鈕和命令的函數,如下圖:

 

構造函數中得到控件的指針變量,如下圖:

添加ToolBar命令的函數的代碼如下:

運行效果:

小結:通過這個例子,我們知道如何使用Qt加載Activex控件,當然包括Esri提供的這幾個,也將這種方式和上面的方式比較,找到適合自己的方法。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM