嵌入式Linux用户图形界面编程课件.pptVIP

  • 0
  • 0
  • 约2.31万字
  • 约 59页
  • 2026-01-20 发布于未知
  • 举报

2.窗口部件Qt擁有一系列能滿足不同需求的窗口部件,如按鈕、滾動條等。Qt的窗口部件使用很靈活,能夠適應子類化的特殊要求。Qt中有3個主要的基類:QObject、QTimer和QWidget。窗口部件是QWidget或其子類的實例,自定義的部件則通過子類繼承得來,繼承關係如圖9.9所示。(1)基本部件。一個窗口部件可包含任意數量的子部件。子部件在父部件的區域內顯示。沒有父部件的部件是頂級部件(比如一個窗口),Qt不在窗口部件上施加任何限制。任何部件都可以是頂級部件;任何部件都可以是其他部件的子部件。通過使用佈局管理器可以自動設定子部件在父部件區域中的位置,如果喜歡也可以手動設定。如果父部件被停用、隱藏或刪除後,同樣的動作會遞歸地應用於它的所有子部件。標籤、消息框、工具提示等並不局限於使用同一種顏色、字體和語言。通過使用HTML的一個子集,Qt的文本渲染部件能夠顯示多語言寬文本,下麵是一個實例代碼:#includeqapplication.h#includeqlabel.hintmain(intargc,char**argv){QApplicationapp(argc,argv);QLabel*hello=newQLabel(fontcolor=blueHelloiQt/Embedded!/i/font,0);app.setMainWidget(hello);hello-show();returnapp.exec();}這是我們接觸到的第一個Qt程式,為了使大家便於理解,對程式的代碼一行一行地解說。#includeqapplication.h這一行引用了包含QApplication類定義的頭檔。在每一個使用Qt的應用程式中都必須使用一個QApplication對象。QApplication管理了各種各樣的應用程式的廣泛資源,比如默認的字體和游標,等等。#includeqlabel.h引用了包含QLabel類定義的頭檔,因為本例使用了QLabel對象。QLabel可以像其他QWidget一樣管理自己的外形。一個窗口部件就是一個可以處理用戶輸入和繪製圖形的用戶介面對象。程式員可以改變它的全部外形和其他屬性,以及這個窗口部件的內容。intmain(intargc,char**argv)main()函數是程式的入口。在使用Qt的所有情況下,main()只需要在把控制轉交給Qt庫之前執行一些初始化,然後Qt庫通過事件來向程式告知用戶的行為。argc是命令行變數的數量,argv是命令行變數的數組,這是一個C/C++特徵。QApplicationapp(argc,argv);app是這個程式的Qapplication,它在這裏被創建並且處理命令行變數。所有被Qt識別的命令行參數都會從argv中被移除,並且argc也因此而減少。在任何Qt的窗口系統部件被使用之前必須創建QApplication對象。QLabel*hello=newQLabel(fontcolor=blueHelloiQt/Embedded!/i/font,0);這裏是在QApplication之後接著的是第一個窗口系統代碼,創建了一個標籤。這個標籤被設置成顯示“HelloQt/Embedded!”並且字體顏色為藍色,“Qt/Embedded!”為斜體。因為構造函數指定0為它的父窗口,所以它自己構成了一個窗口。app.setMainWidget(hello);這個按鈕被選為這個應用程式的主窗口部件。如果用戶關閉了主窗口部件,應用程式就退出了。設置主窗口部件並不是必須的步驟,但絕大多數程式都會這樣做。hello.show();當創建一個窗口部件的時候,它是不可見的。必須調用show()來使它變為可見的。returnapp.exec();這裏就是main()把控制轉交給Qt,並且當應用程式退出的時候exec()就會返回。在exec()中,Qt接受並處理用戶和系統的事件並且把它們傳遞給適當的窗口部件。(2)畫布。QCanvas類提供一個2D圖形的高級介面。它能夠處理大量的畫布專案來描述直線、矩形、橢圓、文本、位圖,以及動畫等。畫布專案很容易做成互動式介面,例如,支持用戶移動等。畫布專案是QCanvasItem子類的實例。它們比窗口部件輕巧得多,能很快地移動、隱藏和顯示。QCanvas可以有效地支持衝突檢測,還能羅列出指定區域中的所有畫布專案。QCanvasItem可以被子類化,用以提供自定義的專案類型或擴充已有類型的功能。QCanvas對象由QCanvasV

文档评论(0)

1亿VIP精品文档

相关文档