• <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>
            Cpper
            C/C++高級(jí)工程師 Android高級(jí)軟件工程師 IT集成工程師 音頻工程師 熟悉c,c++,java,c#,py,js,asp等多種語(yǔ)言 程序猿
            學(xué)習(xí)QT的一個(gè)原因是貌似QT做出來(lái)的界面比較絢麗
            我倒想看看能做出來(lái)啥樣子的

            從QT窗體布局說(shuō)起
            凡是窗體布局無(wú)非就是如何擺放的問(wèn)題
            1.想當(dāng)然如果擺放有2個(gè)方式一個(gè)是所見(jiàn)即所得,一個(gè)是使用布局管理器
            先說(shuō)后者吧
            2.QT有好幾種布局管理器無(wú)非就是啥子流式布局,格子布局等等
            從這個(gè)層級(jí)上說(shuō)軟件界面都是布局嵌套的
            3.布局和控件的關(guān)系
               一般是一個(gè)布局對(duì)應(yīng)于一個(gè)控件容器(或者頂層控件)
               使用當(dāng)前布局管理器加掛子控件(容器)即可
            然后給當(dāng)前控件掛上布局管理器即可
            下面是一個(gè)簡(jiǎn)單的QT Layout的例子(從QT例子改的)
            class Dialog : public QDialog
            {
                Q_OBJECT
            public:
                Dialog();
            private:
                
            void createHorizontalGroupBox();

                
            enum {button_number = 4};
                QGroupBox 
            *groupbox;
                QPushButton 
            *buttons[button_number];
                QDialogButtonBox 
            *buttonBox;
            };
            實(shí)現(xiàn)如下:
            #include <QtGui>

            #include 
            "dialog.h"

            //! [0]
            Dialog::Dialog()
            {
                createHorizontalGroupBox();

                buttonBox 
            = new QDialogButtonBox(QDialogButtonBox::Ok
                                                 
            | QDialogButtonBox::Cancel);

                connect(buttonBox, SIGNAL(accepted()), 
            this, SLOT(accept()));
                connect(buttonBox, SIGNAL(rejected()), 
            this, SLOT(reject()));

                QVBoxLayout 
            *mainLayout = new QVBoxLayout;
                mainLayout
            ->addWidget(groupbox);
                mainLayout
            ->addWidget(buttonBox);
                setLayout(mainLayout);

                setWindowTitle(tr(
            "LayoutTest"));
            }

            void Dialog::createHorizontalGroupBox()
            {
                groupbox 
            = new QGroupBox(tr("Layout Test"));
                QHBoxLayout 
            *layout = new QHBoxLayout;

                buttons[
            0= new QPushButton(tr("Button1"));
                buttons[
            1= new QPushButton(tr("Button2"));
                buttons[
            2= new QPushButton(tr("Button3"));
                buttons[
            3= new QPushButton(tr("Button4"));

                
            for(int i = 0;i<button_number;i++)
                    layout
            ->addWidget(buttons[i]);
                groupbox
            ->setLayout(layout);
            }

            幾個(gè)知識(shí)點(diǎn):
            1.groupbox = new QGroupBox(tr("Layout Test"));
            Layout Test 是個(gè)文本這個(gè)無(wú)須解釋
            那tr呢?查查資料知道是為了支持多語(yǔ)言
            先知道即可以后使用的話在具體查查吧
            2.QDialogButtonBox是個(gè)什么東西
               看看最終的程序界面吧
               原來(lái)是對(duì)話框的確認(rèn)和取消按鈕
                再看信號(hào)槽函數(shù)無(wú)非就是綁定按鈕到操作函數(shù)
                connect(buttonBox, SIGNAL(accepted()), this, SLOT(accept()));
                connect(buttonBox, SIGNAL(rejected()), this, SLOT(reject()));
                那accepted和accept函數(shù)有啥區(qū)別?
                看看文檔
                accept函數(shù)的解釋是:
            Hides the modal dialog and sets the result code to Accepted
              accpeted函數(shù)的解釋是:
            This signal is emitted when the dialog has been accepted either

            在說(shuō)說(shuō)QT皮膚
            學(xué)習(xí)QT的主要目的就是想做做臉蛋好看好的軟件界面
            那就試試看吧
            查到的QT有一個(gè)名叫QSS(CSS?)的文件可以原來(lái)?yè)Q膚
            那就改改看吧
            #include <QApplication>
            #include 
            <QFile>
            #include 
            <QStyleFactory>
            #include 
            <QTextStream>
            #include 
            "dialog.h"

            void setSkin(QApplication* const app, QString const &skinFile);

            int main(int argc, char *argv[])
            {
                QApplication app(argc, argv);
                setSkin(
            &app ,"skin.qss");
                Dialog dialog;
                dialog.show();
                
            return app.exec();
            }

            void setSkin(QApplication* const app, QString const &skinFile)
            {
                QFile qss(skinFile);
                qss.open(QFile::ReadOnly);
                app
            ->setStyleSheet(qss.readAll());
                qss.close();
            }
            相應(yīng)的QSS文件如下:
             QPushButton 
             
            {
                color
            :red;
                background
            :url(setting.png)
             
            }
            這里把PushButton的文本顏色設(shè)置為紅色
            同時(shí)把它的背景設(shè)置為圖片stting.png

            完了
            PS:如果學(xué)習(xí)新知識(shí)?
            囫圇吞棗比較適合快速學(xué)習(xí)

            posted on 2011-03-13 12:08 ccsdu2009 閱讀(5473) 評(píng)論(2)  編輯 收藏 引用 所屬分類(lèi): 雜項(xiàng)QT編程
            Comments
            • # re: QT學(xué)習(xí)筆記-2.QT窗體布局和皮膚加載
              孫霧
              Posted @ 2011-03-15 09:35
              大家現(xiàn)在在實(shí)際開(kāi)發(fā)(c++)中用的哪種IDE比較多呢,  回復(fù)  更多評(píng)論   
            • # re: QT學(xué)習(xí)筆記-2.QT窗體布局和皮膚加載
              ccsdu2009
              Posted @ 2011-03-15 10:04
              @孫霧
              之前一直沒(méi)做過(guò)界面編程的
              現(xiàn)在打算學(xué)習(xí)QT來(lái)開(kāi)發(fā)絢麗界面  回復(fù)  更多評(píng)論   
             
            国产亚洲精品久久久久秋霞 | 久久一区二区三区免费| 欧美午夜A∨大片久久 | 欧美午夜A∨大片久久| 无码久久精品国产亚洲Av影片| segui久久国产精品| 中文字幕无码免费久久| 国产免费久久精品99久久| 亚洲色欲久久久综合网| 久久人人超碰精品CAOPOREN| 97久久精品国产精品青草| 久久人妻AV中文字幕| 久久精品无码一区二区日韩AV| 午夜精品久久久久久99热| 久久影视综合亚洲| 国产91久久综合| 久久精品中文騷妇女内射| 色婷婷久久综合中文久久一本| 91精品国产91久久| 久久婷婷五月综合国产尤物app| 久久丝袜精品中文字幕| 97精品伊人久久久大香线蕉| 999久久久免费精品国产| 久久久噜噜噜久久熟女AA片| 久久亚洲AV成人无码软件| 久久久久97国产精华液好用吗| 精品国产一区二区三区久久| 久久国产免费观看精品3| 久久99热这里只有精品国产| 久久人人爽人人人人爽AV| 麻豆精品久久久久久久99蜜桃 | 国产精品九九久久精品女同亚洲欧美日韩综合区 | 青青青伊人色综合久久| 久久精品国产秦先生| 99国产精品久久| 亚洲一区中文字幕久久 | 久久精品国产亚洲AV香蕉| 无码超乳爆乳中文字幕久久| 久久精品国产99国产精品亚洲 | 久久精品国产91久久麻豆自制| 久久99精品综合国产首页|