<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智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                ## 13.6 構建 Qt 應用程序 利用一套工具,Qt 開發人員可以簡化在所有支持平臺中構建應用程序的流程。描述應 用程序、庫和插件的項目文件被用來為每個平臺生成適當的 makefile。 .pro 文件描述了各個項目,該文件以文本方式概述了源文件、頭文件、 Qt Designer 窗體以及其他資源。這些資源都是由 qmake 工具來處理的,以便為每個平臺中的項目生成 適當的 Makefile。 項目文件可描述 Qt 的所有庫、工具以及示例。例如,只需以下三行即可描述 Qt 4 的 HTTP 示例: ``` HEADERS += httpwindow.h SOURCES += httpwindow.cpp main.cpp QT += network ``` 前兩個定義將構建此示例所需的頭文件和源文件告知 qmake; 而最后一個定義則確保 使用 Qt 的網絡連接庫。使用項目文件語法,開發人員可以使用配置選項對編譯流程進行精 細調節,并可為不同的部署環境編寫各種有條件的編譯規則。 此外,使用項目文件可以描述處于目錄樹層次較深位置的項目。 例如,Qt 示例位于頂 級 examples 目錄內的目錄樹中。examples.pro 文件要求 qmake 深入到含有下列行的各類 示例的目錄中: ``` TEMPLATE = subdirs SUBDIRS = dialogs draganddrop itemviews layouts linguist \ mainwindows network painting richtext sql \ threads tools tutorial widgets xml ``` 支持條件編譯意味著 Windows 示例程序只有在 windows 操作系統下的 Qt windows 版 本時才會被編譯。 ``` win32:!contains(QT_EDITION, OpenSource|Console):SUBDIRS += activeqt ``` 使用 qmake 編譯項目時,編譯套件中的其他工具自動會提供 Qt 的所有增強功能:moc將處理頭文件以啟用信號和槽;rcc 將編譯指定的資源; 而 uic 則可用來根據用戶界面創建代碼。 pkg-config 集成支持預編譯頭文件,可以生成 Visual Studio 項目文件;以及其他高 級功能,可以支持開發人員在針對常見項目組件使用跨平臺構建系統的同時,還支持其利用 與平臺特定相關的工具。 更為深入的信息,請參考本書的附錄,那里有 qmake 以及 make 命令的詳細介紹。 13.7 問題與解答 問:什么情況下可以斷開信號與槽的關聯? 答:有 3 種情況需要斷開信號與槽的關聯: 1.斷開與某個對象相關聯的任何對象 這似乎有點不可理解,事實上,當我們在某個對象中定義了一個或者多個信號,這些 信號與另外若干個對象中的槽相關聯,如果我們要切斷這些關聯的話,就可以利用這個方 法,非常之簡潔。 ``` disconnect( myObject, 0, 0, 0 ); ``` 或者 ``` myObject-&gt;disconnect(); ``` 2\.斷開與某個特定信號的任何關聯 ``` disconnect( myObject, SIGNAL(mySignal()), 0, 0 ) ``` 或者 ``` myObject-&gt;disconnect( SIGNAL(mySignal()) ) ``` 3\.斷開兩個對象之間的關聯。 ``` disconnect( myObject, 0, myReceiver, 0 ) ``` 或者 ``` myObject-&gt;disconnect( myReceiver ) ``` 在 disconnect 函數中 0 可以用作一個通配符,分別表示任何信號、任何接收對象、接 收對象中的任何槽函數。但是發射者 sender 不能為 0,其它三個參數的值可以等于 0。 問:Qt 的元對象系統還有哪些功能? 答: 除了提供在對象間進行通訊的機制外,元對象系統還包含以下幾種功能: 1\.QObject::metaObject() 方法 它獲得與一個類相關聯的 meta-object。 2\.QMetaObject::className() 方法 在運行期間返回一個對象的類名,它不需要本地 C++編譯器的 RTTI(run-time type information)支持。 3\.QObject::inherits() 方法 它用來判斷生成一個對象類是不是從一個特定的類繼承出來,當然,這必須是在 QObject 類的直接或者間接派生類當中。 4\.QObject::tr() and QObject::trUtf8() 這兩個方法為軟件的國際化翻譯字符串 。 5\.QObject::setProperty() and QObject::property() 這兩個方法根據屬性名動態的設置和獲取屬性值 。 除了以上這些功能外,它還使用 qobject_cast()方法在 QObject 類之間提供動態轉 換,qobject_cast()方法的功能類似于標準 C++的 dynamic_cast(),但是 qobject_cast() 不需要 RTTI 的支持,在一個 QObject 類或者它的派生類中,我們可以不定義 Q_OBJECT 宏。如果我們在一個類中沒有定義 Q_OBJECT 宏,那么在這里所提到的相應的功能在這個類 中也不能使用,從 meta-object 的觀點來說,一個沒有定義 Q_OBJECT 宏的類與它最接近的 那個祖先類是相同的,那就是說, QMetaObject::className() 方法所返回的名字并不是這 個類的名字,而是與它最接近的那個祖先類的名字。 所以,我們強烈建議,任何從 QObject 繼承出來的類都定義 Q_OBJECT 宏。 問:在 Qt 中怎么響應事件,比如鼠標點擊事件,鍵盤敲擊事件等。 答:你需要在程序中重載下列函數,具體可以查閱 Qt Assistant。 ``` mousePressEvent(QMouseEvent *event) { //要做的事 } keyPressEvent(QkeyEvent *event) { //要做的事(鍵盤) } ```
                  <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>

                              哎呀哎呀视频在线观看