文/李華慶
聲納顯控軟件是聲納系統中的重要組成部分。聲納顯控軟件集聲納信息的顯示和聲納的控制命令為一體,是聲納操作員和聲納設備之間交互的橋梁和紐帶。隨著科學技術的不斷發展和進步,聲納設備提供的探測信息越來越復雜而多樣,因此聲納顯控軟件的功能也變得越來復雜。Qt是一種跨平臺的C++圖形用戶界面,在軟件界面開發過程中具有優良特性,本文介紹一種基于Qt的聲納模擬顯控軟件設計實現方法。
Qt 是一個1991年由Qt Company開發的跨平臺C++圖形用戶界面應用程序開發框架。它既可以開發GUI程序,也可用于開發非GUI程序,比如控制臺工具和服務器。Qt是面向對象的框架,具有的良好封裝機制使得Qt的模塊化程度非常高,可重用性較好,對于用戶開發來說是非常方便的。Qt 提供了一種稱為“信號/槽”的安全類型來替代 callback,這使得各個元件之間的協同工作變得十分簡單。

圖1:聲納顯控軟件設計框架
信號和槽機制是 Qt 的核心機制,可以讓編程人員將互不相關的對象綁定在一起,實現對象之間的通信。
當對象改變其狀態時,信號就由該對象發射 (emit) 出去,而且對象只負責發送信號,它不知道另一端是誰在接收這個信號。這樣就做到了真正的信息封裝,能確保對象被當作一個真正的軟件組件來使用。
用于接收信號,而且槽只是普通的對象成員函數。一個槽并不知道是否有任何信號與自己相連接。而且對象并不了解具體的通信機制。
一個信號可以連接多個槽,當信號發射時,會以不確定的順序一個接一個的調用各個槽;一個槽也可以與多個信號信號相連,無論哪個信號被發射,都會調用這個槽。

圖2:界面實現流程

圖3:聲納模擬顯控界面
聲納顯控軟件設計框架如圖1所示。其中,聲納顯控軟件包括參數顯示與命令控制、畫面顯示兩大類。參數顯示與命令控制包括工作參數顯示、系統參數顯示、操作控制三部分,實現聲納顯控軟件當前工作狀態的顯示以及命令控制;畫面顯示包括掃描圖顯示、幅度圖顯示、歷程圖顯示三部分,顯示聲納顯控軟件接受到的各種畫面信息。
本文所介紹的聲納顯控界面的程序框架式自頂向下的。界面實現流程圖如圖2所示。首先新建一個Qt項目,在main()函數中生成一個QApplication類的實例a,然后定義一個Widget類的對象w,最后在Widget.ui中設計界面,在Widget.cpp中完成代碼實現。
具體實現界面如圖3所示。
界面共有四部分組成,分別是幅度圖、歷程圖、表格、控制菜單。以歷程圖為例進行簡單介紹。
首先在UI文件中對widget進行提升,提升為歷程圖類。歷程圖類的核心實現代碼如下:

在顯控軟件中需要處理光標事件,包括光標進入、光標退出、光標移動和光標點擊(區分左擊和右擊)等。此時就需要用到Qt的鼠標事件。
本文介紹了一種以Qt組件為基礎的聲納模擬顯控軟件的設計與實現。該模擬顯控軟件較好的實現了各個功能,滿足了用戶需求,并且具有良好的可靠性和可擴展性,以后可在此模擬顯控軟件的基礎上實現功能擴展和界面美化。