• <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>

            黎明的剔透里伸出了你沁清的曖昧

            Graphics|EngineDev|GameDev|2D&3D Art

              C++博客 :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
              60 隨筆 :: 1 文章 :: 18 評論 :: 0 Trackbacks

            一、環(huán)境配置

                 用VS新建一個win32控制臺應用程序,我們假設工程名為:Hello。

             

                 選擇工具->選項->項目和解決方案->VC++目錄。

                     (1)  選擇“可執(zhí)行文件”,在里面添加:C:\Qt4.7.0\bin;

                     (2)  選擇“包含文件”,在里面添加:C:\Qt4.7.0\include;   C:\Qt4.7.0\include\Qt;   C:\Qt4.7.0\include\QtCore;   C:\Qt4.7.0\include\QtGui

                     (3)  選擇“庫文件”,在里面添加:C:\Qt4.7.0\lib;

             

            二、開始編程

               1.     選擇菜單上的“QT”選項- >“Launch Designer” ,啟動designer : 放入一個“label”,內(nèi)容寫為:helloQT。然后保存為Hello.ui,再將它添加到源文件中。

                       右擊“Hello.ui”->“屬性”->“自定義生成步驟”:

                       命令行:uic.exe Hello.ui -o HelloUi.h

                       輸出:HelloUi.h

                       附加依賴項:uic.exe; Hello.ui

                       然后,點擊“確定”。這時再右擊“Hello.ui”,選擇“編譯”,則會生成HelloUi.h。將它添加到工程中。

                2.   在Hello.cpp中編寫代碼:

                3.   選擇“項目”,“Hello屬性”,“配置屬性”:

                       (1)  “常規(guī)”:選擇“字符集”為“使用多字節(jié)字符集”;

                       (2)  “調(diào)試”:填寫“環(huán)境”值為:PATH=C:\Qt4.7.0\bin;

                                     填寫“合并環(huán)境”值為:是;

                       (3)  “鏈接器”:進入“常規(guī)”選項,填寫“附加庫目錄”為:C:\Qt4.7.0\lib;

                                        進入“輸入”選項,填寫“附加依賴項”為:qtcore4.lib qtgui4.lib

                                       (注意,這兩個庫之間為空格,不能寫逗號)

                                                                                                                                                                                                                                                                           

          1. 信號和槽
          2.     信號signals的聲明是頭文件中進行的(槽的聲明也在頭文件中聲明,同時要在類聲明的開始處加上Q_OBJECT語句,這將告訴編譯器在編譯之前必須用moc工具進行擴展),并且moc    工具會注意不要將信號定義在實現(xiàn)文件中,使用signals關(guān)鍵字標示信號聲明區(qū),隨后可聲明自己的信號。

                 信號signals沒有public\private\protected等屬性,這點不同于slots。

                 信號signals的返回值為void   

                 槽slots有public slots、private slots、protected slots (方法)

                 信號signals/事件->(驅(qū)動)槽slots/方法

             

          3. 元對象
          4. QT的元對象系統(tǒng)為QT提供了對象間通信的信號與槽機制、實時類型信息、動態(tài)屬性系統(tǒng)等方面的功能。

                   元對象系統(tǒng)在QT中主要有以下三個部分構(gòu)成:QObject類、Q_OBJECT宏、元對象編譯器moc

             

               3.vs中QT顯示中文:

                  #include <QTextCodec>

                 QTextCodec::setCodecForTr(QTextCodec::codecForName("gb18030"));

                 QFont font("Times",12,QFont::Normal,FALSE);

                 app.setFont(font);

                  QTextCodec::setCodecForTr(QTextCodec::codecForName("gb18030"));

                 //QFont font("Times",12,QFont::Normal,FALSE);

                 //a.setFont(font);

             

                4.QAction類的用法

                1、QAction::QAction ( const QString & text, QObject * parent )

                      QAction類的構(gòu)造函數(shù)之一,利用text,parent創(chuàng)建QAction對象。QAction對象一般為菜單中的菜單項,比如 "文件"菜單中"新建"選項就是一個QAction對象,

                     上述構(gòu)造函數(shù)中text成員變量       即為菜單項所表示的內(nèi)容

                     用法:QAction *newAction = new QAction(tr("&New"),this);

                2、void QAction::setIcon ( const QIcon & icon )

                      該函數(shù)可設置菜單項名稱前的圖標

                      用法:newAction->setIcon(QIcon(":/images/new.png"));

                3、void QAction::setShortcut ( const QKeySequence & shortcut );

                      設置QAction對象執(zhí)行的快捷鍵

                      用法:newAction->setShortcut(tr("Ctrl+N"));

                 4、void QAction::setStatusTip ( const QString & statusTip );

                       設置當鼠標移動到“動作”上時,狀態(tài)欄顯示的提示語。

                 5、void QAction::setVisible ( bool );

                      設置“動作”顯示與否,當形參為true是,“動作”表示。

                 6、void QAction::triggered ( bool checked = false ) [signal]

                      此函數(shù)為信號,當用戶觸發(fā)此“動作”時,此信號發(fā)射。例如用戶點擊了菜單中的菜單項等。

                      此函數(shù)一般用法為:在QObject::connect()函數(shù)中作為信號參數(shù),用于觸發(fā)“動作”所對應執(zhí)行的槽函數(shù)——實現(xiàn)“動作”的功能函數(shù),例如:“新建”按鈕被用戶按下,

                     所需要的功能可能      是新建一個文檔,那么新建一個文檔的動作就在這個槽函數(shù)中實現(xiàn)。至于此信號函數(shù)中的形參暫時可以忽略。以后會在介紹QObject類中的靜態(tài)方法connect()函數(shù)時詳細解說。

                  7、void QAction::setCheckable ( bool );

                     此函數(shù)用于設置QAction類中的私有變量: bool checkable ,此屬性用以提供“動作”是否為復選動作,例如Qt Creator中“控件”菜單中的“全屏”菜單項即為復選動作

            菜單

                5  QMainWindow類用法

              1、void QMainWindow::setCentralWidget ( QWidget * widget );

                  此方法作用為設置傳入部件為主窗口布局的中心領域部件。傳入部件可為任意的部件或QWidget類的子類部件。對于“部件”這個詞的理解可以理解為某機器上的一個螺絲、一個配件等等,其實部件就是螺絲和某配件的一個抽象感念嘛,他們都叫做部件,但是卻有著不同的作用和形狀。以后會遇到很多類繼承QWidget類的。相信大家都比筆者聰明,或許我是在說些廢話,呵呵。

                  舉例:

                       在自定義的繼承于QMainWindow的來構(gòu)造函數(shù)里面:

                         QTableWidget *table = new QTableWidget;     //QTableWidget繼承于QWidget類;

                        setCentralWidget(table);

                 2、void  QMainWindow::setWindowIcon ( const QIcon & icon );

                  設置窗口左上角圖標,支持PNG、BMP、GIF、FPEG、PNM、XBM、XPM格式文件。

                  一下為幾種GUI應用程序提供資源的方法:

                        ①將圖片存入文件,在程序運行時加載

                        ②將XPM文件包含在源程序中,因為XPM文件是有效的C++文件

                        ③使用Qt的資源機制————此種方式不僅僅支持圖片格式文件,而且支持任何格式的文件

                 3、QMenuBar *QMainWindow::menuBar() const;

                  此方法返回一個主窗口的菜單欄對象指針。如果在調(diào)用此方法時,主窗口不存在菜單欄,則此方法會創(chuàng)建一個空的菜單欄。在Mac應用程序中,如想在多個主窗口之間共享一個菜單欄,則需要使用QMenuBar *menuBar = new QMenuBar(0);形式創(chuàng)建菜單欄,即創(chuàng)建一個無父部件的菜單欄對象。

                  這里解釋一下什么叫做父部件,初學一定對這個概念不理解,這里的父部件不是C++中類的繼承關(guān)系,而是部件與部件的關(guān)系。我也是學習了一段時間才慢慢悟出這里面的道理的。我看的是《C++ GUI Programming with Qt 4》英文原版,本來理解起來就有些障礙,再遇到這樣新的概念詞匯,更是不知其所云。為什么看英文原版書呢,個人覺得國內(nèi)翻譯的不是很到位,可能在某個地方或關(guān)鍵點給我造成誤導,貌似扯遠了。。。即說說父部件是個什么東西,現(xiàn)在為大家打個比方,一張電腦桌由多個部件構(gòu)成,如桌面,桌子腿,抽屜等等,抽屜上面有抽屜把手,那么抽屜就是抽屜把手的父部件,電腦桌就是抽屜的父部件。相信這樣解釋,大家一定就會理解了。

                 4、QToolBar * QMainWindow::addToolBar ( const QString & title );

                  此函數(shù)為重載函數(shù),其余兩個為已創(chuàng)建了工具欄(QToolBar)對象時,將工具欄對象添加到QMainWindow對象中。下面就會馬上列出這兩個類方法。在調(diào)用此方法時,會創(chuàng)建一個QToolBar對象,返回這個對象的指針,并在主窗口頂部工具欄區(qū)域中顯示。

                5、void QMainWindow::addToolBar ( Qt::ToolBarArea area, QToolBar * toolbar );

                  與上個函數(shù)構(gòu)成重載關(guān)系,此函數(shù)第二個形參為已定義好的工具欄對象指針,第一個形參工具欄表示的位置,此形參為枚舉型變量。

                  工具欄表示位置共4種,即左右上下:

                    (1) Qt::LeftToolBarArea      0x1

                    (2) Qt::RightToolBarArea     0x2

                    (3) Qt::TopToolBarArea       0x4

                    (4) Qt::BottomToolBarArea  0x8

                6、void QMainWindow::addToolBar ( QToolBar * toolbar );

                  與調(diào)用 addToolBar(Qt::TopToolBarArea, toolbar) 方法效果相同,即調(diào)用 addToolBar(Qt::TopToolBarArea, toolbar) 方法,工具欄顯示區(qū)域默認為主窗口頂部。

                7、QStatusBar *QMainWindow::statusBar() const;

                  當主窗口狀態(tài)欄不存在時,創(chuàng)建狀態(tài)欄,并返回狀態(tài)欄對象指針。一般在自定義QMainWindow子類的構(gòu)造函數(shù)時使用,創(chuàng)建狀態(tài)欄對象。創(chuàng)建后,添加QLabel對象,以顯示主窗口狀態(tài)或菜單欄中按鈕的狀態(tài)提示。

            相信通過3、4、5、6、7、QMainWindow類方法的學習,大家應該掌握了創(chuàng)建菜單欄,工具欄和狀態(tài)欄的方法。通常的主窗口一般也就需要這些東西了。但要想讓菜單欄,工具欄以及狀態(tài)欄能有自己的動作或行為,還需要其他類的配合使用。大家不用急,QMainWindow類簡單介紹完畢之后,會介紹這些相關(guān)的類及其使用方法。

                8、void QMainWindow::setWindowModified(bool);

                  當此函數(shù)形式參數(shù)為true時,即設置了WindowModified屬性為true,意思為表明先編輯的文檔有更新,這時,Qt會自動更新標題欄,Mac OS X 系統(tǒng)上在主窗口的關(guān)閉按鈕上將出現(xiàn)一個變更的樣式,其他系統(tǒng)或平臺上會在主窗口標題欄的文件名后多顯示一個“*”。

             

            void MainWindow::open()
            {
                QDialog *dialog = new QDialog;
                dialog->setAttribute(Qt::WA_DeleteOnClose);
                dialog->setWindowTitle(tr("Hello, dialog!"));
                dialog->show();

             

            void MainWindow::open()
            {
                QDialog dialog(this);
                dialog.setWindowTitle(tr("Hello, dialog!"));
                dialog.exec();
            }

             

             

            posted on 2015-08-22 14:55 情絕格調(diào)(fresmaster) 閱讀(727) 評論(0)  編輯 收藏 引用 所屬分類: Documents
            亚洲欧美国产精品专区久久| 777久久精品一区二区三区无码| 伊人久久一区二区三区无码| 午夜精品久久久久久影视777| 精品国产乱码久久久久久人妻| 77777亚洲午夜久久多喷| 精品久久久久久久久久中文字幕| 国内精品久久久久影院老司 | 久久99精品国产麻豆| 免费观看成人久久网免费观看| 久久这里的只有是精品23| 亚洲狠狠综合久久| 久久久久亚洲av综合波多野结衣| 一本大道久久a久久精品综合| 久久精品中文字幕一区| 欧美国产精品久久高清| 97久久天天综合色天天综合色hd| 人妻无码精品久久亚瑟影视| 国产—久久香蕉国产线看观看| 国产精品对白刺激久久久| 新狼窝色AV性久久久久久| 亚洲七七久久精品中文国产| 99久久免费国产精品| 2021久久国自产拍精品| 欧美丰满熟妇BBB久久久| 久久中文字幕人妻丝袜| 久久91这里精品国产2020| 久久99精品国产99久久| 国产精品美女久久久久| 久久亚洲AV成人出白浆无码国产 | 久久夜色精品国产噜噜亚洲a| 色妞色综合久久夜夜| 久久国产热这里只有精品| 精品久久无码中文字幕| 欧美亚洲色综久久精品国产| 久久精品国产清自在天天线| 久久亚洲sm情趣捆绑调教| 亚洲AV日韩精品久久久久久| 亚洲人成网亚洲欧洲无码久久| 伊人久久五月天| 成人久久免费网站|