<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                #(7):MainWindow 簡介 [前面一篇](http://www.devbean.net/2012/08/qt-study-road-2-modules/)大致介紹了 Qt 各個模塊的相關內容,目的是對 Qt 框架有一個高屋建瓴般的了解。從現在開始,我們將開始嘗試使用 Qt 開始新的歷程。由于我們已經比較詳細地介紹過信號槽的相關內容,因此我們可以用一個新的程序開始進一步的學習,同時對信號槽有一個比較深入的理解。 `QMainWindow`是 Qt 框架帶來的一個預定義好的主窗口類。所謂主窗口,就是一個普通意義上的應用程序(不是指游戲之類的那種)最頂層的窗口。比如你現在正在使用的瀏覽器,那么主窗口就是這個瀏覽器窗口。試著回想一下經典的主窗口,通常是由一個標題欄,一個菜單欄,若干工具欄和一個任務欄。在這些子組件之間則是我們的工作區。事實上,`QMainWindow`正是這樣的一種布局。 下面我們新建一個工程。還記得在新建工程的時候,Qt Creator 通常會幫助我們創建一個`MainWindow`嗎?我們曾經為了介紹信號槽,將`main()`函數做了修改。現在我們直接使用 Qt Creator 生成的代碼來編譯運行一下: ~~~ #include <QApplication> #include "mainwindow.h" int main(int argc, char* argv[]) { QApplication app(argc, argv); MainWindow win; win.show(); return app.exec(); } ~~~ [![](https://box.kancloud.cn/2015-12-29_56823241775cc.png)](http://files.devbean.net/images/2012/08/qt-mw.png) 我們仔細看看這個窗口。雖然不太明顯,但它實際上分成了幾個部分: [![](https://box.kancloud.cn/2015-12-29_568232418485a.png)](http://files.devbean.net/images/2012/08/mw-struct.png) 主窗口的最上面是 Window Title,也就是標題欄,通常用于顯示標題和控制按鈕,比如最大化、最小化和關閉等。通常,各個圖形界面框架都會使用操作系統本地代碼來生成一個窗口。所以,你會看到在 KDE 上面,主窗口的標題欄是 KDE 樣式的;在 Windows 平臺上,標題欄是 Windows 風格的。如果你不喜歡本地樣式,比如 QQ 這種,它其實是自己將標題欄繪制出來,這種技術稱為 DirectUI,也就是無句柄繪制,這不在本文的討論范疇。Window Title 下面是 Menu Bar,也就是菜單欄,用于顯示菜單。窗口最底部是 Status Bar,稱為狀態欄。當我們鼠標滑過某些組件時,可以在狀態欄顯示某些信息,比如瀏覽器中,鼠標滑過帶有鏈接的文字,你會在底部看到鏈接的實際 URL。 除去上面說的三個橫向的欄,中間是以矩形區域表示。我們可以看出,最外層稱為 Tool Bar Area,用于顯示工具條區域。之所以是矩形表示,是因為,Qt 的主窗口支持多個工具條。你可以將工具條拖放到不同的位置,因此這里說是 Area。我們可以把幾個工具條并排顯示在這里,就像 Word2003 一樣,也可以將其分別放置,類似 Photoshop。在工具條區域內部是 Dock Widget Area,這是停靠窗口的顯示區域。所謂停靠窗口,就像 Photoshop 的工具箱一樣,可以停靠在主窗口的四周,也可以浮動顯示。主窗口最中間稱為 Central Widget,就是我們程序的工作區。通常我們會將程序最主要的工作區域放置在這里,類似 Word 的稿紙或者 Photoshop 的畫布等等。 對于一般的 Qt 應用程序,我們所需要做的,就是編寫我們的主窗口代碼,主要是向其中添加各種組件,比如菜單、工具欄等,當然,最重要的就是當中的工作區。當我們將這些都處理完畢之后,基本上程序的工具也可以很好地實現。 通常我們的程序主窗口會繼承自`QMainWindow`,以便獲得`QMainWindow`提供的各種便利的函數。這也是 Qt Creator 生成的代碼所做的。 由于`QMainWindow`這個類在 Qt 5 中并沒有什么改變,因此上面的代碼可以直接拿到 Qt 4 中進行編譯。事實上,我們使用 Qt Creator 生成的代碼也是可以直接在 Qt 4 中編譯。只不過需要注意一點:Qt 4 中沒有 widgets 模塊,因此在 pro 文件中,我們通常需要這么來寫: ~~~ QT += core gui greaterThan(QT_MAJOR_VERSION, 4): QT += widgets TARGET = qtdemo TEMPLATE = app SOURCES += main.cpp \ mainwindow.cpp HEADERS += mainwindow.h ~~~ 簡單解釋一下 pro 文件。首先,我們定義了 QT,用于告訴編譯器,需要使用哪些模塊。這些模塊都在前面章節中有過介紹。我們通常需要添加 core 和 gui。第二行,如果 Qt 的主版本號(`QT_MAJOR_VERSION`)大于 4,也就是 Qt 5,則需要另外添加 widgets(因為在 Qt 5 中,所有組件都是在 widgets 模塊定義的)。TARGET 是生成的程序的名字。TEMPLATE 是生成 makefile 所使用的模板,比如 app 就是編譯成一個可執行程序,而 lib 則是編譯成一個鏈接庫(默認是動態鏈接庫)。SOURCES 和 HEADERS 顧名思義,就是項目所需要的源代碼文件和頭文件。現在,我們只需使用默認的 pro 文件即可。以后隨著項目的不斷增大,pro 文件通常會非常復雜。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看