2009-10-03 54 views
2

我一直在做一個簡單的圖形用戶界面,並遇到了障礙。關於如何創建GUI佈局管理器,我還沒有找到任何示例或可讀的源代碼。我想知道是否有人知道創建一個資源的某些資源,或者一些源代碼不像Qt的佈局引擎那樣神祕。有關創建GUI佈局管理器的資源?

+0

哪個平臺是您和您使用什麼庫來創建你的圖形用戶界面? – StackedCrooked 2009-10-03 14:21:14

+0

我正在試圖寫我自己的只是爲了它的地獄。 – beta 2009-10-03 17:40:36

回答

4

這取決於你是什麼意思的「佈局經理」,我不熟悉Qt,所以這並沒有給我多少線索。

如果你的意思是可調整大小的窗口處理,但我認爲相關的術語是「約束求解器」。我從未仔細研究過,但我相信GUI約束求解器基於linear programming - Simplex algorithm等等。有可能用Gaussian Elimination做點什麼,但我對此很不自信。

基於對「gui佈局線性規劃」的快速搜索,您可能會發現來自CiteSeerX的this paper有趣 - 有PDF下載。如果你不喜歡神祕,那麼至少它看起來並不算數學,但我懷疑它也不是光讀書。我想我很快就會發現,因爲你對我有興趣。

+0

這就是我正在尋找的!對不起,術語的使用不正確,因爲這對我來說是未知的領域。謝謝。 – beta 2009-10-03 17:39:49

+0

+1鏈接到論文。往往這些類型的紙張都在付費牆後面。 – 2013-03-26 09:54:16

+0

@ graham.reeds:citeseer是一個很棒的網站查找文章,否則不是免費的。當我在做我的主人時,我用了很多。 – 2015-01-24 22:18:01

2

我目前正在爲Mozilla XUL製作Windows端口。我的方法不涉及像史蒂夫提到的線性編程技術,但它是一種更加面向對象的方法。它基於Composite和Decorator設計模式。

複合模式允許您創建具有子控件的控件,而子控件又可以擁有自己的子控件。控件負責將其子控件定位在其指定的客戶矩形中。

例如,假設您想要實現一個佈局來將其子控件水平放置。然後佈局算法需要計算每個子控件的寬度,以便爲每個子控件計算x個偏移量。

通過返回子控件寬度的總和來計算容器的寬度。

裝飾類可以用來添加額外的屬性。例如,一個MarginDecorator可以子控件之間添加間距,一個ScrollDecorator可以滾動條,等等

這是一個有趣的事情,我祝你好運!