Qt學習之路(12): 菜單和工具條

在前面的QMainWindow的基礎之上,我們開始著手建造我們的應用程式。雖然現在已經有一個架構,但是,確切地說我們還一行代碼沒有寫呢!下面的工作就不那麼簡單了!在這一節裡面,我們要為我們的架構添加菜單和工具條。就像Swing裡面的Action一樣,Qt裡面也有一個類似的類,叫做QAction。顧名思義,QAction類儲存有關於這個動作,也就是action的資訊,比如它的文本描述、表徵圖、快速鍵、回呼函數(也就是訊號槽),等等。神奇的是,QAction能夠根據添加的位置來改變自己的樣子

Qt學習之路(13): 菜單和工具條(續)

前面一節我們已經把QAction添加到菜單和工具條上面。現在我們要添加一些圖片美化一下,然後把訊號槽加上,這樣,我們的action就可以相應啦!首先來添加表徵圖。QAction的表徵圖會顯示在功能表項目的前面以及工具條按鈕上面顯示。為了添加表徵圖,我們首先要使用Qt的資源檔。在QtCreator的項目上右擊,選擇New File…,然後選擇resource

Qt學習之路(14): 狀態列

有段時間沒有寫過部落格了。假期去上海旅遊,所以一直沒有能夠上網。現在又來到這裡,開始新的篇章吧! 今天的內容主要還是繼續完善前面的那個程式。我們要為我們的程式加上一個狀態列。 狀態列位於主視窗的最下方,提供一個顯示工具提示等資訊的地方。一般地,當視窗不是最大化的時候,狀態列的右下角會有一個可以調節大小的控制點;當視窗最大化的時候,這個控制點會自動消失。Qt提供了一個QStatusBar類來實現狀態列。 Qt具有一個相當成熟的GUI架構的實現——這一點感覺比Swing要強一些——Qt似乎對GUI的

Qt學習之路(15): Qt標準對話方塊之QFileDialog

Qt學習之路》已經寫到了第15篇,然而現在再寫下去卻有點困難,原因是當初並沒有想到會連續的寫下去,因此並沒有很好的計劃這些內容究竟該怎樣去寫。雖然前面說過,本教程主要線路參考《C++ Gui Programming with Qt 4, 2nd

Qt學習之路(16): Qt標準對話方塊之QColorDialog

繼續來說Qt的標準對話方塊,這次說說QColorDialog。這是Qt提供的顏色選擇對話方塊。 使用QColorDialog也很簡單,Qt提供了getColor()函數,類似於QFileDialog的getOpenFileName(),可以直接獲得選擇的顏色。我們還是使用前面的QAction來測試下這個函數:         QColor color = QColorDialog::getColor(Qt::white, this);         QString msg = QString(

Qt學習之路(tip): parent參數

這是一篇很簡單的文章,僅僅是用來說明一下一個參數的作用,因此我把它寫成了tip,而不是接下來的17. 程式寫的多了,你會發現幾乎所有的Qt類的建構函式都會有一個parent參數。這個參數通常是QObject* 或者是 QWidget*

Qt學習之路(17): Qt標準對話方塊之QMessageBox

好久沒有更新部落格,主要是公司裡面還在驗收一些東西,所以沒有及時更新。而且也在寫一個基於Qt的畫圖程式,基本上類似於PS的東西,主要用到的是Qt Graphics View

Qt學習之路(26): 反走樣

反走樣是圖形學中的重要概念,用以防止“鋸齒”現象的出現。很多系統的繪圖API裡面都會內建了反走樣的演算法,不過預設一般都是關閉的,Qt也不例外。下面我們來看看代碼。這段代碼僅僅給出了paintEvent函數,相信你可以很輕鬆地替換掉前面章節中的相關代碼。 {window.open("http://blog.51cto.com/viewpic.php?refimg=" + this.src)}'

Qt學習之路(18): Qt標準對話方塊之QInputDialog

這是Qt標準對話方塊的最後一部分。正如同其名字顯示的一樣,QInputDialog用於接收使用者的輸入。QInputDialog提供了一些簡單的static函數,用於快速的建立一個對話方塊,正像QColorDialog提供了getColor函數一樣。 首先來看看getText函數: bool isOK; QString text = QInputDialog::getText(NULL, "Input Dialog",                                       

Qt學習之路(27): 漸層填充

前面說了有關反走樣的相關知識,下面來說一下漸層。漸層是繪圖中很常見的一種功能,簡單來說就是可以把幾種顏色混合在一起,讓它們能夠自然地過渡,而不是一下子變成另一種顏色。漸層的演算法比較複雜,寫得不好的話效率會很低,好在很多繪圖系統都內建了漸層的功能,Qt也不例外。漸層一般是用在填充裡面的,所以,漸層的設定就是在QBrush裡面。Qt提供了三種漸層畫刷,分別是線性漸層(QLinearGradient)、輻射漸層(QRadialGradient)、角度漸層(QConicalGradient)。如所示(

Qt學習之路(19): 事件(event)

前面說了幾個標準對話方塊,下面不打算繼續說明一些組件的使用,因為這些使用很難講完,很多東西都是與實際應用相關的。實際應用的複雜性決定了我們根本不可能把所有組件的所有使用方法都說明白。這次來說說Qt相對進階一點的特性:事件。 事件(event)是有系統或者Qt本身在不同的時刻發出的。當使用者按下滑鼠,敲下鍵盤,或者是視窗需要重新繪製的時候,都會發出一個相應的事件。一些事件是在對使用者操作做出響應的時候發出,如鍵盤事件等;另一些事件則是由系統自動發出,如計時器事件。 一般來說,使用Qt編程時,我們並

Qt學習之路(28): 座標變換

經過前面的章節,我們已經能夠畫出一些東西來,主要就是使用QPainter的相關函數。今天,我們要看的是QPainter的座標系統。 同很多座標系統一樣,QPainter的預設座標的原點(0, 0)位於螢幕的左上方,X軸正方向是水平向右,Y軸正方向是豎直向下。在這個座標系統中,每個像素佔據1 x 1的空間。你可以把它想象成是一張座標值,其中的每個小格都是1個像素。這麼說來,一個像素的中心實際上是一個“半像素座標系”,也就是說,像素(x, y)的中心位置其實是在(x + 0.5, y +

Qt學習之路(20): 事件接收與忽略

本章內容也是關於Qt事件。或許這一章不能有一個完整的例子,因為對於事件總是感覺很抽象,還是從底層上理解一下比較好的吧!前面說到了事件的作用,下面來看看我們如何來接收事件。回憶一下前面的代碼,我們在子類中重寫了事件函數,以便讓這些子類按照我們的需要完成某些功能,就像下面的代碼:void MyLabel::mousePressEvent(QMouseEvent * event){        if(event->button() == Qt::LeftButton) {           

Qt學習之路(21): event()

今天要說的是event()函數。記得之前曾經提到過這個函數,說在事件對象建立完畢後,Qt將這個事件對象傳遞給QObject的event()函數。event()函數並不直接處理事件,而是將這些事件對象按照它們不同的類型,分發給不同的事件處理器(event

Qt學習之路(22): 事件過濾器

Qt建立了QEvent事件對象之後,會調用QObject的event()函數做事件的分發。有時候,你可能需要在調用event()函數之前做一些另外的操作,比如,對話方塊上某些組件可能並不需要響應斷行符號按下的事件,此時,你就需要重新定義組件的event()函數。如果組件很多,就需要重寫很多次event()函數,這顯然沒有效率。為此,你可以使用一個事件過濾器,來判斷是否需要調用event()函數。QOjbect有一個eventFilter()函數,用於建立事件過濾器。這個函數的簽名如下:virtu

Qt學習之路(23): 自訂事件

這部分將作為Qt事件部分的結束。我們在前面已經從大概上瞭解了Qt的事件機制。下面要說的是如何自訂事件。Qt允許你建立自己的事件類型,這在多線程的程式中尤其有用,當然,也可以用在單線程的程式中,作為一種對象間通訊的機制。那麼,為什麼我需要使用事件,而不是使用訊號槽呢?主要原因是,事件的分發既可以是同步的,又可以是非同步,而函數的調用或者說是槽的回調總是同步的。事件的另外一個好處是,它可以使用過濾器。Qt中的自訂事件很簡單,同其他類似的庫的使用很相似,都是要繼承一個類進行擴充。在Qt中,你需要繼承的

Qt學習之路(24): QPainter

Qt的繪圖系統允許使用相同的API在螢幕和列印裝置上進行繪製。整個繪圖系統基於QPainter,QPainterDevice和QPaintEngine三個類。 QPainter用來執行繪製的操作;QPaintDevice是一個二維空間的抽象,這個二維空間可以由QPainter在上面進行繪製;QPaintEngine提供了畫筆painter在不同的裝置上進行繪製的統一的介面。QPaintEngine類用在QPainter和QPaintDevice之間,並且通常對開發人員是透明的,除非你需要自訂一個

HTC G7 相機故障,自己動手維修詳細步驟

HTC G7 相機不能使用維修步驟         My Phone是HTC

Qt學習之路(25): QPainter(續)

過去一天沒有接上上章的東西,今天繼續啊!首先還是要先把上次的代碼拿上來。 void PaintedWidget::paintEvent(QPaintEvent *event) {         QPainter painter(this);         painter.drawLine(80, 100, 650, 500);         painter.setPen(Qt::red);         painter.drawRect(10, 10, 100, 400);       

系統效能最佳化的常見八大誤區

系統效能最佳化的常見八大誤區一、輸送量與回應時間系統的輸送量反映了一個系統的容量,可承受的負載,很多系統都以這樣一個指標來衡量系統的效能。而回應時間往往更容易忽視。我認為輸送量更多是衡量一個系統在特定壓力下的穩定性,而回應時間可以更好的形容系統效能。一個請求回應時間滿足不了需求,那系統再高的輸送量是沒有意義的。比如普通的網站頁面,如果客戶的一個請求都能在200ms以內響應,那是非常不錯,如果能在2秒內響應,那也還行,但如果都要在20秒響應,估計沒人使用。而對於區域網路內的應用,如營業廳收費操作,

總頁數: 61357 1 .... 19489 19490 19491 19492 19493 .... 61357 Go to: 前往

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.