Qt使用總結

  1. QtCreator中使用的是MinGW進行編譯的,所以在windows下如果想要下載QtCreator就需要下載對應mingw的版本,而不是vs的,否則是編譯不了的。或者自己下載Qt源碼庫,用Cmake中選中MinGW重新編譯即可。
  2. 所以如果安裝Qt libraries 4.8.2 for Windows (minGW 4.4, 318 MB),則必須先安裝QtCreator,因爲QtCreator安裝過程中會自動安裝MinGW,而Qt libraries 4.8.2 for Windows (minGW 4.4, 318 MB)的安裝又必須使用MinGW。因此這2者的順序不可顛倒。
  3. 但是自從QtCreator2.5.0以後,就不再捆綁MinGW了,需要用戶自行下載安裝。Qt官網給出的下載地址爲ftp://ftp.qt.nokia.com/misc/MinGW-gcc440_1.zip.
  4. 當然我們也可以用VS的編譯器進行編譯,這樣裝了微軟的VS後我們在QtCreator中設置好微軟的編譯器目錄,然後在QtCreator中進行編寫代碼,編譯調試等.
  5. 在用微軟的調試器時可以裝一個dbg_x86_6.11.1.404.msi,裝完後QtCreator會自動識別這個dbg調試器的.
  6. Qt中用來顯示圖片的控件爲Label後者用TextBrowser.當用Label顯示時,需要用setPixmap函數,且該函數對應傳入與圖像相關的參數爲圖像的數據部分;當用TextBrowser顯示時,直接用append函數即可。該函數對應傳入與圖像相關的參數爲圖像的文件名(要包含路徑)。
  7. 顯示文本的控件爲TextBrowser.
  8. 獲得spinBox的值是調用其value()函數。
  9. 獲得LineEdit的值是調用其text()函數,然後轉換成相應的數據類型即可。

  10. ui中的close函數只是關閉窗口的顯示功能而已,並沒有delete掉裏面的變量。

  11. QPalette爲調色版,其顏色組分爲3組,活動組,非活動組,

  12. 可用組;其中活動組爲當前窗口所在組,非活動組爲其它窗口所在組,不可用組是由於某種原因暫時不能使用的組 。改變調色版的顏色可以使用setColor這個函數,這個函數有2個重載函數,其中參數ColorRole表示是更改哪個參數;比如說一般的背景色。

  13. EditLine背景色顏色角色爲QPalette::Base;前景色文字的顏色角色爲QPalette::Text.

  14. Button背景色顏色角色爲QPalette::Button.前景色文字的顏色角色爲QPalette::ButtonText.

  15. Label前景文字顏色角色爲QPalette::WindowText.

  16. 當在TextBrowser中進行圖片顯示時,如果需要讓顯示圖片的窗口自適應圖片的大小,可採用QTextBrowser下的setFixedWidth()和setFixedHeight()函數來設置窗口尺寸,其參數是從圖片中獲取。當然這個設置的窗口長和寬已經包括了右邊和下邊的滾動條,所以給參數的時候需要把這2者考慮進去。

  17. 要對整個窗口的背景該色,且不改變其上面控件的背景色,則這時需用QPalette類。且時需用Window作爲背景色角色;如果用Base作爲背景色角色的話,那麼它只會改變QTextEidt類及其派生類的背景色;如果用seStyleSheet,其用background-color的話,那麼它會把其上面的控件背景色全改了,且相應的子窗口的也都改了。

  18. 在Qt中,將1個數值a轉換成文本,可採用,tr(“%1”).arg(a).也可採用QString::number(a).

  19. 實際運行到這幾句代碼時,並不是顯示完first,延時1s後顯示second,再延時1s後顯示third. 而是直接延時2秒,first,second,third同時顯示呢?

  20. 其原因在主線程GUI中不宜採用sleep()等函數,否則會出現意想不到的結果。

  21. 如果需要延時,#include <QElapsedTimer>後,可以用下面的代碼(比如說延時1s):

  22. QtCreator中使用的是MinGW進行編譯的,所以在windows下如果想要下載QtCreator就需要下載對應mingw的版本,而不是vs的,否則是編譯不了的。或者自己下載Qt源碼庫,用Cmake中選中MinGW重新編譯即可。

  23. 所以如果安裝Qt libraries 4.8.2 for Windows (minGW 4.4, 318 MB),則必須先安裝QtCreator,因爲QtCreator安裝過程中會自動安裝MinGW,而Qt libraries 4.8.2 for Windows (minGW 4.4, 318 MB)的安裝又必須使用MinGW。因此這2者的順序不可顛倒。

  24. 但是自從QtCreator2.5.0以後,就不再捆綁MinGW了,需要用戶自行下載安裝。Qt官網給出的下載地址爲ftp://ftp.qt.nokia.com/misc/MinGW-gcc440_1.zip.

  25. 當然我們也可以用VS的編譯器進行編譯,這樣裝了微軟的VS後我們在QtCreator中設置好微軟的編譯器目錄,然後在QtCreator中進行編寫代碼,編譯調試等.

  26. 在用微軟的調試器時可以裝一個dbg_x86_6.11.1.404.msi,裝完後QtCreator會自動識別這個dbg調試器的.

  27. Qt中用來顯示圖片的控件爲Label後者用TextBrowser.當用Label顯示時,需要用setPixmap函數,且該函數對應傳入與圖像相關的參數爲圖像的數據部分;當用TextBrowser顯示時,直接用append函數即可。該函數對應傳入與圖像相關的參數爲圖像的文件名(要包含路徑)。

  28. 顯示文本的控件爲TextBrowser.

  29. 獲得spinBox的值是調用其value()函數。

  30. 獲得LineEdit的值是調用其text()函數,然後轉換成相應的數據類型即可。

  31. ui中的close函數只是關閉窗口的顯示功能而已,並沒有delete掉裏面的變量。

  32. QPalette爲調色版,其顏色組分爲3組,活動組,非活動組,

  33. 可用組;其中活動組爲當前窗口所在組,非活動組爲其它窗口所在組,不可用組是由於某種原因暫時不能使用的組 。改變調色版的顏色可以使用setColor這個函數,這個函數有2個重載函數,其中參數ColorRole表示是更改哪個參數;比如說一般的背景色。

  34. EditLine背景色顏色角色爲QPalette::Base;前景色文字的顏色角色爲QPalette::Text.

  35. Button背景色顏色角色爲QPalette::Button.前景色文字的顏色角色爲QPalette::ButtonText.

  36. Label前景文字顏色角色爲QPalette::WindowText.

  37. 當在TextBrowser中進行圖片顯示時,如果需要讓顯示圖片的窗口自適應圖片的大小,可採用QTextBrowser下的setFixedWidth()和setFixedHeight()函數來設置窗口尺寸,其參數是從圖片中獲取。當然這個設置的窗口長和寬已經包括了右邊和下邊的滾動條,所以給參數的時候需要把這2者考慮進去。

  38. 要對整個窗口的背景該色,且不改變其上面控件的背景色,則這時需用QPalette類。且時需用Window作爲背景色角色;如果用Base作爲背景色角色的話,那麼它只會改變QTextEidt類及其派生類的背景色;如果用seStyleSheet,其用background-color的話,那麼它會把其上面的控件背景色全改了,且相應的子窗口的也都改了。

  39. 在Qt中,將1個數值a轉換成文本,可採用,tr(“%1”).arg(a).也可採用QString::number(a).

  40. Qtimer::singleShot(0, this, SLOT(event()));

  41. 其中第一個參數爲時隔多長(單位爲ms)執行後面的event信號函數,當然該函數的函數名可以自己定義。這句代碼的意思是立即執行執行event()函數。和sleep()函數一樣,在Qt中也不能用opencv中的waitKey()函數來進行延時。

  42. 用QT Creater編程,如果沒有自動補全是很痛苦的事情,於是便查閱了QT的文檔,發現CTRL+SPACE是自動補全的快捷鍵;
但是在 Creater裏使用居然沒有效果,估計是輸入法切換的衝突(CTRL+SPACE是我中英文輸入的默認快捷鍵)
於是尋求解決方法,在QT Creater->Tools->Options... 裏找到environment->Keyboard,發現TextEditor.CompleteThis命令,其快捷鍵是Ctrl+Space;將其result掉,然後輸入Alt+/(Eclipse裏習慣的~~)後應用退出即可.

  43. 要達到像vs一樣在終端(單獨的終端)輸出想調試的各種信息,不是採用cout,而是採用qDebug()<<”xxx”;

  44. 如果菜單下的action不能夠運動到toolbar上,則在toolbar上右擊,選擇separate toolbar,然後移動即可。

45. setCentralWidget()函數是把控件佈滿整個界面的語句。

  46. 在Qt程序其中的一個函數中,如果需要調用另一個窗口類且顯示出來,則有2種方法。其一是在本類中定義一個全局變量,然後在這個函數中new一個對象。如下所示:

  void MainWindow::on_actionNew_Window_triggered()

  {

  my_dailog = new Dialog(this);

  my_dailog->show();

  }

  這種情況下建立的窗口時非模態的,且可以同時調出多個my_dialog窗口來。

  另外一種方法是在程序內部定義一個類對象,如下所示:

  void MainWindow::on_actionNew_Window_triggered()

  {

  Dialog my_dialog;

  my_dialog.setModal(false);

  my_dialog.exec();

  }

  但是不管其模態設置是否爲true,該窗口都是模態的,即該窗口顯示出來時其它的窗口不能工作了。當然此時只能顯示1個my_dialog了。

  47. Qt中的label控件對應android中的是TextView控件。

  48. 如果想要窗口內部的控件大小隨着窗口拉伸等變化而變化,則需要在佈局中設置,點擊ui文件中的主體,然後選擇佈局控件中滿足自己需求的一個即可。

  49. window下的路徑名需要用2個左斜槓或者1個右斜杆。即”/”或者””。

  50. 在界面中設置顯示的文字屬性,如果在cpp中被重新設置了,那麼運行時是以cpp中設置的最後的設置,因爲這些屬性被覆蓋掉了.

  51. 在Qt Designer界面設計中,label中顯示的內容各種屬性都可以設置,比如字體格式,顏色等.但是PushButton中顯示的字體在屬性欄就只能更改其內容。如果要更改其它屬性則需要在代碼中實現。

  52. 一般信號中的toggled是指對應的屬性爲checkable,然後被鼠標單擊了下而發射的。這個在複選按鈕和單選按鈕中比較常見,但是在PushButton中也是可以用的,將PushButton的屬性checkable設置爲真,則運行時鼠標單擊一下,按鈕的顏色會變淡,再單擊一下又會變亮,它是以顏色的的深淺來提醒它的toggle的。

菜單欄中的一個選項,一般是用trigger來發射信號。

  53. Qt的MessageBox中比較常用的是,MessageBox::warning(),MessageBox::information,MessageBox:YES等。

  54. 在LineEdit中有一個echoMode,裏面可以選中password模式,則在LineEdit中輸入的內容對用戶是不可見的,當然對系統是可見的,我們可以將其內容讀取出來。

  55. Cmobo Box中增加一項用的是addItem()函數。例如:

ui->comboBox->addItem("China");

  56. Qt中QListView是基於Model的,QListWidget是基於Item的。

  57. 如果是用QListWidget的話,加入內容採用的是addItem()方法。

  58. 頭文件和對應的源文件可以同時include同一個頭文件。

  59. 用滑動條觸發進度條的實驗中,至少有下面3種方法可以執行。

  可以直接在界面設計的信號與槽中連接好對應的信號與槽。無需任何代碼。

  在界面的構造函數中用connect函數連接好信號與槽,也無需其他代碼。如下:

  connect(ui->horizontalSlider, SIGNAL(valueChanged(int)), ui->progressBar, SLOT(setValue(int)));

  可以在滑動條值改變的槽函數中實現,如下:

  void Dialog::on_horizontalSlider_valueChanged(int value)

  {

  ui->progressBar->setValue(ui->horizontalSlider->value());

  }

  60. 讓狀態欄顯示文本不是採用setText()方法,而是採用showMessage().其第二個參數爲顯示該內容持續的時間,以毫秒爲單位。

  61. 如果在Qt Creator中需要帶參數運行,因爲在main函數中經常有argv這個變量傳入參數,這可以在Qt Creator的左側Project一欄中—>Targets—>Desttop(中間偏上的位置)—>Run    —>Arguments中輸入需要附加的參數即可。

  62. QtextEdit除了用append()函數顯示圖片外,還可以用insertHtml()函數和setPlainText()來顯示,用法類似,其中insertHtml()可以用來顯示圖片和有格式的文字,而setPlainText()只能用來顯示無格式的文字。

  63. Qt Gui界面的顯示是在程序的構造函數執行完後完成的,所以如果在構造函數中對界面有動態的輸出效果我們是看不到的,只能都構造函數執行完了後才能看到最後的結果。那麼怎麼辦才能做到在構造函數結束時自動調用某一程序來完成我們想要看到的動態初始化效果呢?這裏可以使用QTimer下的singleShot()函數。

  64. Qtimer::singleShot(0, this, SLOT(event()));

  65. 其中第一個參數爲時隔多長(單位爲ms)執行後面的event信號函數,當然該函數的函數名可以自己定義。這句代碼的意思是立即執行執行event()函數。

和sleep()函數一樣,在Qt中也不能用opencv中的waitKey()函數來進行延時。

  66. 用QT Creater編程,如果沒有自動補全是很痛苦的事情,於是便查閱了QT的文檔,發現CTRL+SPACE是自動補全的快捷鍵;
但是在 Creater裏使用居然沒有效果,估計是輸入法切換的衝突(CTRL+SPACE是我中英文輸入的默認快捷鍵)
於是尋求解決方法,在QT Creater->Tools->Options... 裏找到environment->Keyboard,發現TextEditor.CompleteThis命令,其快捷鍵是Ctrl+Space;將其result掉,然後輸入Alt+/(Eclipse裏習慣的~~)後應用退出即可.

  67. 要達到像vs一樣在終端(單獨的終端)輸出想調試的各種信息,不是採用cout,而是採用qDebug()<<”xxx”;

  68. 如果菜單下的action不能夠運動到toolbar上,則在toolbar上右擊,選擇separate toolbar,然後移動即可。

  69. setCentralWidget()函數是把控件佈滿整個界面的語句。

  70. 在Qt程序其中的一個函數中,如果需要調用另一個窗口類且顯示出來,則有2種方法。其一是在本類中定義一個全局變量,然後在這個函數中new一個對象。如下所示:

  void MainWindow::on_actionNew_Window_triggered()

  {

  my_dailog = new Dialog(this);

  my_dailog->show();

  }

  這種情況下建立的窗口時非模態的,且可以同時調出多個my_dialog窗口來。

  另外一種方法是在程序內部定義一個類對象,如下所示:

  void MainWindow::on_actionNew_Window_triggered()

  {

  Dialog my_dialog;

  my_dialog.setModal(false);

  my_dialog.exec();

  }

  但是不管其模態設置是否爲true,該窗口都是模態的,即該窗口顯示出來時其它的窗口不能工作了。當然此時只能顯示1個my_dialog了。

  Qt中的label控件對應android中的是TextView控件。

  71. 如果想要窗口內部的控件大小隨着窗口拉伸等變化而變化,則需要在佈局中設置,點擊ui文件中的主體,然後選擇佈局控件中滿足自己需求的一個即可。

  72. window下的路徑名需要用2個左斜槓或者1個右斜杆。即”/”或者””。

  73. 在界面中設置顯示的文字屬性,如果在cpp中被重新設置了,那麼運行時是以cpp中設置的最後的設置,因爲這些屬性被覆蓋掉了.

  74. 在Qt Designer界面設計中,label中顯示的內容各種屬性都可以設置,比如字體格式,顏色等.但是PushButton中顯示的字體在屬性欄就只能更改其內容。如果要更改其它屬性則需要在代碼中實現。

  75. 一般信號中的toggled是指對應的屬性爲checkable,然後被鼠標單擊了下而發射的。這個在複選按鈕和單選按鈕中比較常見,但是在PushButton中也是可以用的,將PushButton的屬性checkable設置爲真,則運行時鼠標單擊一下,按鈕的顏色會變淡,再單擊一下又會變亮,它是以顏色的的深淺來提醒它的toggle的。

菜單欄中的一個選項,一般是用trigger來發射信號。

  76. Qt的MessageBox中比較常用的是,MessageBox::warning(),MessageBox::information,MessageBox:YES等。

  77. 在LineEdit中有一個echoMode,裏面可以選中password模式,則在LineEdit中輸入的內容對用戶是不可見的,當然對系統是可見的,我們可以將其內容讀取出來。

  78. Cmobo Box中增加一項用的是addItem()函數。例如:

ui->comboBox->addItem("China");

  79. Qt中QListView是基於Model的,QListWidget是基於Item的。

  80. 如果是用QListWidget的話,加入內容採用的是addItem()方法。

  81. 頭文件和對應的源文件可以同時include同一個頭文件。

  82. 用滑動條觸發進度條的實驗中,至少有下面3種方法可以執行。

  可以直接在界面設計的信號與槽中連接好對應的信號與槽。無需任何代碼。

  在界面的構造函數中用connect函數連接好信號與槽,也無需其他代碼。如下:

  connect(ui->horizontalSlider, SIGNAL(valueChanged(int)), ui->progressBar, SLOT(setValue(int)));

  可以在滑動條值改變的槽函數中實現,如下:

  void Dialog::on_horizontalSlider_valueChanged(int value)

  {

  ui->progressBar->setValue(ui->horizontalSlider->value());

     }

  83. 讓狀態欄顯示文本不是採用setText()方法,而是採用showMessage().其第二個參數爲顯示該內容持續的時間,以毫秒爲單位。

  84. 如果在Qt Creator中需要帶參數運行,因爲在main函數中經常有argv這個變量傳入參數,這可以在Qt Creator的左側Project一欄中—>Targets—>Desttop(中間偏上的位置)—>Run—>Arguments中輸入需要附加的參數即可。

  85. Windows+Qt Creator+Opencv的使用:

    需要在Qt工程中,即***.pro文件中加入:       

    INCLUDEPATH+=C:\Qt\opencv2.4.2\build\include\
    C:\Qt\opencv2.4.2\build\include\opencv\
    C:\Qt\opencv2.4.2\build\include\opencv2

    LIBS+=C:\Qt\opencv2.4.2\build\x86\vc10\lib\opencv_core242d.lib\
    C:\Qt\opencv2.4.2\build\x86\vc10\lib\opencv_highgui242d.lib\
    C:\Qt\opencv2.4.2\build\x86\vc10\lib\opencv_imgproc242d.lib
    特別要注意的地方是INCLUDEPATH後面添加的是C:\Qt\opencv2.4.2\build\include\等,而不是C:\Qt\opencv2.4.2\include\等,否則一直報錯。
    另外還有一點是Qt中的目錄不能包含空格,所以安裝的opencv目錄前如果有Program Files是不行的,爲此我還專門把opencv移到了另一個目錄,2個opencv同時用。
  86. QTextBrowser中append方法是在當前框下一行加入內容,可以是文字或圖片等。它本身已經固定了換行模式,取消不了。

     setText方法是在框在加入內容,也可以是文字或圖片等,但是它會把前面所有的內容都覆蓋掉。

     insertHtml和append一樣,可以加入文本或圖片等,它不會覆蓋掉其內容,但是默認的也是從下一行開始的,即有換行模式,不過該自動換行模式可以被取消。採用下面的語句:

     ui->textBrowser->setWordWrapMode (QTextOption::NoWrap);

     同理,如果要恢復自動換行模式,採用:

     ui->textBrowser->setWordWrapMode (QTextOption::WordWrap);

  87.  解決新版Qt中不能使用opengl中的gluXXX()函數方法:        

           1. 先下載glut庫http://www.opengl.org/resources/libraries/glut/glutdlls37beta.zip

           2.將下載下來的文件解壓,將glut32.lib和glut.lib兩個lib文件移到qt目錄下的./lib文件夾中。

           3.將glut.dll和glut32.dll兩個動態鏈接庫移到C:\windows\system32中。

           4.將glut.h文件移到qt目錄下的\include\QtOpenGL中

     5.新建一個txt文件,裏面輸入代碼:#include “glut.h”,然後把該txt文件的名字重命名爲glut,注意這個地方不需要加後綴

        6. 切換到在自己的程序中,在myGLWidget.cpp(QGLWidget派生類的cpp)加入"#include<glut>" 就OK了。即使我們也在GLWidget.cpp中也加入了頭文#include<QtOpenGL>,

              上面的"#include<glut>" 同樣需要。   

  88.  在Qt中使用定時器的方法:

     法一:只需啓動定時器,例如startTimer(5);這裏是設置5ms定時,然後複寫timerEvent(QTimerEvent*)函數即可。

     法二:用如下代碼進行設置

    timer = new QTimer(this);
    connect(timer, SIGNAL(timeout()), this, SLOT(timerEvent()));
    timer->start(5);
    然後重寫timerEvent()槽函數即可。
 89. 當使用tr進行語言國際化時,有可能會出現錯誤:error : 'tr' was not declared in this scope。解決方法:在程序中加入#include<QObject>,並使用QObject::tr();
 90. Qt中如果需要更改工程名的話(這裏指用QtCreator建立的工程),則需刪除一些QtCreator生成的與舊工程名相關的文件,一般刪除如下文件:Makefile、Makefile.Debug、Makefile.Release、*.pro.user,以及目錄release、debug。然後更改*.pro文件的名字,重新打開工程編譯即可。
 91. QFileInfo類是用來提供與系統無關的文件信息的。canonicalFilePath指的是解釋過的絕對路徑,比如"..","."分別解釋爲上一級目錄和本目錄。
 92. qobject_cast<A>(B),當類型B和A相同或者類型B是A的子類類型,則返回類型A。否則返回0;其實就是說如果B可以轉換成A的話(2種類型有相似性),則進行強制類型轉換,否則轉換失敗。
  93. QSetting類提供了平臺無關的永久保存應用程序設置的方法,這些設置包括窗口的位置,大小等信息。

  94. QRectF爲一個float精度的矩形框。

  95. QPainter爲一個繪圖裝置,我們可以在上面進行繪圖,繪圖的對象爲widget或者printer。

  96. 畫筆是用來繪製線型的,主要樣式有3個方面:筆帽,結合點和線型。

  97. 畫刷是用來畫填充封閉的幾何圖形的,主要有2個參數設置:顏色和樣式。

  98. 如果編譯時出現Qt自帶的源代碼處的錯誤提示,比如說:qtextoption.h語法錯誤: 缺少“;”(在標識符“QtGuiModule”的前面)

  99. 定位到錯誤的地方時,是Qt系統的源碼,按照道理系統源碼時不會出錯的,這時有能是自己寫的一個類繼承了系統提供的類,而這個類在頭文件的括號中沒有使用分號所致.

  100. 在Qt中使用定時器功能有2中方法,第一個是使用QTimer類。第二個是使用QObject子類的重載函數timerEvent()。在使用第1種方法時需要將設置定時器的信號與槽連接,然後使用start函數來啓動該定時器,使用stop方法來停止定時器。在使用第2種方法時,只需要調用系統的startTimer()函數就可以了。

  101. QTimer::singleShot()方法可以完成在時間間隔完成後執行後面的槽函數,相當於個直接的延時函數,使用起來應該還是蠻方便的。

  102. 顏色的第4個通道值可以理解爲不透明度,即如果爲255的話,就指的是完全不透明。

  103. QString::number(num)可以將整型的num轉換成string型。

  104. qreal 其實就是double型。

  105. 往QListWidget加入文字可以使用其addItem()方法.

  106. arg()中的參數是QString型,則其對應的百分號需要用單引號括起來。

  107. Qt::DecorationRole是Qt::ItemDataRole中的一種, Qt::ItemDataRole表示每一個model中的Item都有自己的一個數據集,且有自己的特色。這些特點用來指定模型中的哪一種數據類型將被使用。而Qt::DecorationRole指的是說數據將以圖表的形式來呈現。

  108. QAbstractItemView爲一個抽象item視圖類,裏面有很多方法可以重寫。

  109. QPaint是一個繪圖類,可以設置畫筆,畫刷,字體。

  110. 在設計用戶名密碼登陸時,如果用戶名和密碼都正確,則會調用調用父類的QDialog::accept()槽函數,該函數實現關閉當前對話框,設置對話框的運行結果爲QDialog::Accepted,併發送QDialog::finished(int result)信號。

  111. 增加StackWidget頁面的方法,在StackWidget上鼠標右擊,選擇insert page,然後繼續選擇在本頁之前或者之後加入頁碼。

  112. QAction對象使用setText()方法時,如果在對象的構造函數中已經有了其文字顯示,那麼action上面顯示的就是構造函數中的text文本。這裏的setText文本有2個作用,第一個是如果該action對應到了菜單欄中,則菜單欄會自動將其顯示出來;第二個時如果構造函數中沒有設置文本內容,則該action會顯示setText()方法設置的內容,當然了,如果action設置了圖標,該文本內容就被覆蓋了,退化爲文本提示了。

  113. cellClicked(int, int)信號是當表格中的一個cell單元被單擊時發出的。它的兩個參數分別爲表格中cell的行號和列號。

  114. 可以使用frameGeometry()來獲得程序中的主界面,然後該界面的定位函數可以獲得與主界面的相對位置,比如說frameGeometry().bottomLeft()就是獲得主界面的左下方的位置。

  115. 當自己定義了的一個類,該類有對應的頭文件和源文件。如果在第二個類的頭文件中藥使用到第一個類,則可以不用包含第一個類的頭文件,直接用class關鍵字聲明就可以了,在第二個類的源文件中則需要包含第一個類的頭文件,因爲這裏需要使用第一個類對象的成員方法。

  116. Qt中正則表達式爲類QRegExp,正則表達式是指一個用來描述或者匹配一系列符合某個句法規則的字符串的單個字符串。比如說程序中的QRegExp rx("\\[\\d{2}:\\d{2}\\.\\d{2}\\]");其實就是表示歌詞文件前面的格式,比如[00:05.54]。表達式中的d{2}表示匹配2個數字。

 117. Qt中常見的類的繼承總結:

  如果需要設計界面,且需要菜單欄,工具欄,狀態欄等,一般繼承QMainWidget類。

  如果需要界面,不需要菜單欄,工具欄,狀態欄等,一般繼承QDialog類。

  如果需要使用自定義視圖來畫圖形,則可以繼承QAbstractItem類。

  如果需要自己設計場景,比如遊戲開發的時候,可以繼承QGraphicsView類。

  如果需要自己製作一個小圖形視圖,可以考慮繼承QGraphicsObject類,當將這些小視圖構成一個視圖組時,該組的類可以繼承QGraphicsItemGroup類和QObject類。

  一般的界面設計也可以繼承QWidget類。

  一般的文本類可以繼承QLabel,比如在設計音樂播放器時的顯示桌面歌詞的類。

118. 在QtCreator的使用中,有時候會出現兩個尖括號在一起的情況,這時候沒有語法錯誤,但是QtCreator這個編輯環境會在你的代碼下出現個紅色的波紋,讓人看起來非常不舒服。例如:

 

   解決方法非常簡單,即把兩個尖括號中間不要緊挨着,用一個空格號隔開一下即可,這時候紅色的波紋警告線就消失了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章