• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            visualfc

              C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
              42 隨筆 :: 0 文章 :: 119 評論 :: 0 Trackbacks
            為了測試一下GUI自動排版,照著自己的手機做了一個GUI程序界面。特此發圖以留紀念。

            posted on 2009-09-17 22:29 visualfc 閱讀(2408) 評論(10)  編輯 收藏 引用

            評論

            # re: 測試GUI自動排版,發圖紀念。 2009-09-17 23:45 diverger
            博主說的自動排版是指類型于QT或者wxWidgets的layout的功能嗎?  回復  更多評論
              

            # re: 測試GUI自動排版,發圖紀念。[未登錄] 2009-09-18 08:17 visualfc
            是的,使用了相似的layout功能來完成。  回復  更多評論
              

            # re: 測試GUI自動排版,發圖紀念。 2009-09-18 10:02 codespy
            博主能否介紹下布局的原理呢?  回復  更多評論
              

            # re: 測試GUI自動排版,發圖紀念。[未登錄] 2009-09-18 12:18 visualfc
            如果詳細講,恐怕不只一篇文章能講得完,在這里僅簡單介紹一下實現原理。
            圖中的布局僅使用boxlayout來完成,如果配合space可以完成更多控制。
            這個布局控制與QT和WX有所不同,其子窗口由父窗口管理,layout僅具備算法功能,因此理論上可以對窗口任意切換layout。

            //代碼原理如下
            class xwnd
            {
            xwnd* first;xwnd* last;xwnd* prev;xwnd*next;
            xlayout* layout;
            //調用排版功能
            void layout()
            {
            if (_layout)
            _layout->layout(this);
            for (xwindow* child = _first; child; child = child->_next)
            {
            child->layout();
            }
            }
            };
            class xwindow : xwnd;
            class xframe : xwindow;
            class xspace : xwindow;不生成實際的窗口,只是一個占位。

            //示例如下:
            xframe* frame = new xframe(_T("TEST")); //框架
            frame->set_layout(xboxlayout(true));//設置HORZ_BOX
            new xedit(frame,LAYOUT_FILL,xsize(100,100)); //左面的EDIT窗口
            xwindow* right = new xwindow(frame); //右面的窗口做為容器
            right->setlayout(xboxlayout(false)); //設置VERT_BOX
            new xspace(right,LAYOUT_FILL_Y); //促使OK和CANCEL按鈕置于最下
            new xbutton(right,_T("OK"));
            new xbutton(right,_T("Cancel"));

            frame->create(); //最后生成框架窗口并顯示


              回復  更多評論
              

            # re: 測試GUI自動排版,發圖紀念。 2009-09-20 21:47 codespy
            主要的布局有兩種,一種是一維的(水平盒子,垂直盒子),另一種是二維的(網格布局)。此圖上的鍵盤布局是二維的,難道是用一維布局組合的嗎?

            對于“這個布局控制與QT和WX有所不同,其子窗口由父窗口管理,。。。”,
            這個與Qt相同。  回復  更多評論
              

            # re: 測試GUI自動排版,發圖紀念。 2009-09-20 21:49 codespy
            補充一下,有兩張圖片看不到(顯示的是兩個紅叉)!  回復  更多評論
              

            # re: 測試GUI自動排版,發圖紀念。[未登錄] 2009-09-21 08:01 visualfc
            @codespy
            我的表達可能不太準確,“這個布局控制與QT和WX有所不同,其子窗口由父窗口管理,。。。” 這段話指的是在WX和QT中使用的是 Lyaout->addWidget(child)的形式,而在此布局中則由 new child(parent)的方式來指定。
            為了試驗布局是否準確,此例中的鍵盤布局使用的也是hbox和vbox的組合。即將鍵盤grid看成是一個vbox和四個hbox組合。  回復  更多評論
              

            # re: 測試GUI自動排版,發圖紀念。[未登錄] 2009-09-21 08:07 visualfc
            兩張圖片看不到是因為原來文件名為phone..png,結果編輯時不認,又重傳的phone.png。現已修正。  回復  更多評論
              

            # re: 測試GUI自動排版,發圖紀念。 2009-09-22 13:08 codespy
            @visualfc
            在Qt中布局對象沒有子部件的所有權(ownership),子部件的所有權仍然歸父部件。也就是說,銷毀布局并不會銷毀布局所管理的子部件。
            對于實現二維布局算法,俺沒有找到好的參考資料(估計各家的實現都不一樣), 現在還沒什么思路。看到博主的圖片后很興奮!不過,有的布局用一維布局組合的話會使用戶的代碼顯得混亂,甚至組合不出來(比如類似德國納粹標志)。  回復  更多評論
              

            # re: 測試GUI自動排版,發圖紀念。[未登錄] 2009-09-22 13:52 visualfc
            @codespy
            是這樣的,本質上一樣,只是不同的實現方式而已。
            可能的話加我gmail。visualfc at gmail.com  回復  更多評論
              

            亚洲国产精品综合久久网络 | 伊人精品久久久久7777| 欧美性大战久久久久久| 亚洲狠狠婷婷综合久久蜜芽| 国产99久久久久久免费看| 亚洲欧洲久久久精品| 丁香狠狠色婷婷久久综合| 色综合合久久天天给综看| 久久99精品国产麻豆宅宅| 久久只有这里有精品4| 久久99热狠狠色精品一区| 久久久国产视频| 久久人搡人人玩人妻精品首页| 国产精品久久午夜夜伦鲁鲁| 国产精品久久久久久久久久影院| 亚洲一本综合久久| 日韩AV无码久久一区二区| 狠狠色丁香久久婷婷综合_中| 精品久久一区二区| 97久久久久人妻精品专区| 久久午夜夜伦鲁鲁片免费无码影视 | 国产免费久久久久久无码| 国产人久久人人人人爽| 欧美大香线蕉线伊人久久| 久久亚洲熟女cc98cm| 久久人人青草97香蕉| 久久精品女人天堂AV麻| 精品久久久久中文字幕一区| 999久久久国产精品| 精品国产乱码久久久久久浪潮| 久久精品九九亚洲精品天堂| 久久精品一区二区三区不卡| 九九久久99综合一区二区| 国产婷婷成人久久Av免费高清| 久久婷婷五月综合97色| 久久久久99精品成人片直播| 久久狠狠高潮亚洲精品| 久久青草国产精品一区| 丁香久久婷婷国产午夜视频| 久久国产午夜精品一区二区三区| 久久国产精品偷99|