2010-05-18 86 views
1

在我的項目中,我將通過編程生成用戶界面。這個UI的可伸縮性是非常重要的要求。編程用戶界面建議?

到目前爲止,我使用二維圖形來生成用戶界面。 我認爲可能有不同的解決方案,但目前我只知道兩個解決方案。

第一個是在我的用戶界面上提供每個二維圖形的X,Y座標(我不喜歡這個解決方案,因爲我不想計算每個圖形的X,Y座標,目前我沒有有一個很容易做到這一點的邏輯)

第二個(目前我現在正在使用)是使用佈局,根據項目的大小組織其內容。在這個解決方案中,我不必計算每個項目的X,Y座標。 (佈局正在爲我做這件事。)但是這種方法可能有其自己的陷阱。

我對用戶界面編程非常陌生。你能給我這個問題的建議嗎?

+1

你的應用程序做什麼?或者你正在嘗試構建什麼樣的用戶界面?如果您可以提供更多的細節,我認爲人們可以給出更好的答案 – Jujjuru 2010-05-19 01:38:54

+0

我正在開發列車交通控制器軟件項目。我負責將真實世界鐵路基礎設施建模爲交互式用戶界面。所以用戶界面由鐵路,鐵路交換機,信號,水平線等組成。 – onurozcelik 2010-05-19 04:58:44

回答

0

有Qt設計器(GUI Builder),它允許像在Visual Studio中一樣設計GUI。

手動計算X,Y是一種不好的方法 - 它絕對可以嵌入。

+0

我沒有使用預定義的Qt Widgets。所以Qt Designer並沒有解決我的問題。 – onurozcelik 2010-05-18 20:01:13

2

我遵循的一般規則是,除非有非常具體的理由使用絕對佈局,否則應始終使用佈局容器。我使用絕對佈局的唯一實際情況是,當我實現一個奇怪的自定義佈局時,不適合與內置佈局管理器輕鬆配合。

佈局經理會讓你的生活更輕鬆。使用佈局管理器可以更輕鬆地處理調整窗口大小或變化大小的內容。

我不記得每一個qt的內置佈局的東西都有問題。

0

不要重新發明輪子: 從UI對象繼承你的對象例如,面板,所以你可以使用這些對象的UI技術。 對於其餘使用容器或任何其他佈局對象

1

我假設你的鐵路地圖只需要是真正的軌道佈局的原理圖,你可以創建所有佈局在網格上的組件,併爲每個網格你實現一個簡單的佈局算法,根據你的要求,你可以說一個網格單元只能有一個實際的控制(並使單元更小),或者對於每個控制類型都有固定點的較大單元,或者只需從左到右/從上到下地安排單元格內的控件,無論您爲什麼工作。您也可以將細胞本身細分爲子細胞以約束控制。因此,當你擴大整體尺寸時,每個細胞可以告訴控制器它應該是多大。

它也可能有助於在顯示器上實現層,例如使軌道層與控制層分離。

您正在研究一個非常具體的「非傳統」UI,您需要一些適合您的問題的解決方案。

我不知道你是否已經這樣做了,但想想如果你可以實現數據驅動的方法來配置你的用戶界面。不要對佈局進行硬編碼,將佈局功能與實際操作部分分開,並將其移至可輕鬆更改的文件中。

聽起來你有某種工作解決方案,但你說「我不喜歡這個解決方案,因爲我不想計算每個圖形的X,Y座標」,如果你有圖形控件可以放在任何地方屏幕雖然代碼,但用戶可以放置這些控件的編輯器可能並不是一個大步。它可能沒有你想象的那麼努力,特別是如果你已經爲你的UI使用配置文件而不是硬編碼值。

我最近做了很多工作,通過樣式改變了qt元素的正常外觀,但我不認爲正常的qt-gui部件足以滿足您的努力,但QGraphicsView子系統可能是它很好地適應並能很好地處理與大量元素的交互,但很難在不知道更多細節的情況下給出更具體的答案。