日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

<QT>常見(jiàn)錯(cuò)誤總結(jié)

 niudp 2015-07-14


1,

./ui_logindialog.h:150: error: 'class QLineEdit' has no member named 'setPlaceholderText'

./ui_logindialog.h:151: error: 'class QLineEdit' has no member named 'setPlaceholderText'

./ui_logindialog.h:155: error: 'class QLineEdit' has no member named 'setPlaceholderText'

其原因是例子中用的庫(kù)是4.8.1,而我電腦中的是4.5.1,
4.7.1版本之前的庫(kù)都沒(méi)有setPlaceholderText,換庫(kù)就能解決?;蛘咧苯訔5粝嚓P(guān)的代碼就ok


2,

 

make: Entering directory `/sda6-112G-data/qt-space/login/login-build-desktop-Desktop_Qt_4_8_1_for_GCC__Qt_SDK____'

g++ -c -pipe -O2 -Wall -W -D_REENTRANT -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/opt/QtSDK/Desktop/Qt/4.8.1/gcc/mkspecs/linux-g++ -I../login -I/opt/QtSDK/Desktop/Qt/4.8.1/gcc/include/QtCore -I/opt/QtSDK/Desktop/Qt/4.8.1/gcc/include/QtGui -I/opt/QtSDK/Desktop/Qt/4.8.1/gcc/include -I. -I. -I../login -I. -o mythreadtest.o ../login/mythreadtest.cpp

In file included from /usr/lib/gcc/x86_64-neokylin-linux/4.4.5/../../../../include/c++/4.4.5/thread:35,

from ../login/mythreadtest.cpp:5:

/usr/lib/gcc/x86_64-neokylin-linux/4.4.5/../../../../include/c++/4.4.5/c++0x_warning.h:31:2: error: #error This file requires compiler and library support for the upcoming ISO C++ standard, C++0x. This support is currently experimental, and must be enabled with the -std=c++0x or -std=gnu++0x compiler options.

make: *** [mythreadtest.o] Error 1

make: Leaving directory `/sda6-112G-data/qt-space/login/login-build-desktop-Desktop_Qt_4_8_1_for_GCC__Qt_SDK____'

17:49:39: 進(jìn)程"/usr/bin/make"退出,退出代碼 2 。

構(gòu)建項(xiàng)目login 時(shí)發(fā)生錯(cuò)誤 (目標(biāo): 桌面)

當(dāng)執(zhí)行構(gòu)建步驟 'Make'時(shí)

什么情況???????


3,

犀利的link錯(cuò)誤 undefined reference to vtable for xxxx

原來(lái)我沒(méi)有實(shí)現(xiàn)虛函數(shù)原來(lái)的代碼為

undefined reference to vtable for MyThread

~MyThread();             改為              ~MyThred() {} 就OK了,果然很犀利。

還奉送另一個(gè)錯(cuò)誤吧。

undefined reference to MyThred::mutex

原來(lái)是犀利的 靜態(tài)變量沒(méi)有初始化?。?/p>

在xxx.cpp中初始化就OK了 wxMutex CThread::mutex;


4,將qt工程移到其他機(jī)器上,有如下報(bào)錯(cuò),各種郁悶了<QT>常見(jiàn)錯(cuò)誤總結(jié)

 

[root@ login-build-desktop-Desktop_Qt_4_8_1_for_GCC__Qt_SDK____]# ./login 

./login: symbol lookup error: ./login: undefined symbol: _ZN9QLineEdit18setPlaceholderTextERK7QString


應(yīng)該是qt版本太高,被移植的電腦qt版本低

工程下邊還有個(gè)目錄,調(diào)試下那個(gè)就ok了


5,

 

QWidget: Must construct a QApplication before a QPaintDevice

程序異常終止。


錯(cuò)誤的原因是:創(chuàng)建對(duì)象的位置錯(cuò)誤


6,

make: Nothing to be done for `first'  

在qt工程目錄mysql111中(包含main.cpp,mysql111.pro等的目錄

 

執(zhí)行命令 qmake "INCLUDEPATH+=/usr/include/mysql" "LIBS+=-L/usr/lib/mysql -lmysqlclient_r" mysql11.pro

后,再make;  報(bào)錯(cuò)

解決辦法:#rm -rf *.o


7.



8.



 



 

總結(jié)系列_13(Qt使用總結(jié),續(xù)...)

  1. QtCreator中使用的是MinGW進(jìn)行編譯的,所以在windows下如果想要下載QtCreator就需要下載對(duì)應(yīng)mingw的版本,而不是vs的,否則是編譯不了的。或者自己下載Qt源碼庫(kù),用Cmake中選中MinGW重新編譯即可。
  2. 所以如果安裝Qt libraries 4.8.2 for Windows (minGW 4.4, 318 MB),則必須先安裝QtCreator,因?yàn)镼tCreator安裝過(guò)程中會(huì)自動(dòng)安裝MinGW,而Qt libraries 4.8.2 for Windows (minGW 4.4, 318 MB)的安裝又必須使用MinGW。因此這2者的順序不可顛倒。
  3. 但是自從QtCreator2.5.0以后,就不再捆綁MinGW了,需要用戶自行下載安裝。Qt官網(wǎng)給出的下載地址為ftp://ftp.qt./misc/MinGW-gcc440_1.zip.
  4. 當(dāng)然我們也可以用VS的編譯器進(jìn)行編譯,這樣裝了微軟的VS后我們?cè)赒tCreator中設(shè)置好微軟的編譯器目錄,然后在QtCreator中進(jìn)行編寫(xiě)代碼,編譯調(diào)試等.
  5. 在用微軟的調(diào)試器時(shí)可以裝一個(gè)dbg_x86_6.11.1.404.msi,裝完后QtCreator會(huì)自動(dòng)識(shí)別這個(gè)dbg調(diào)試器的.
  6. Qt中用來(lái)顯示圖片的控件為L(zhǎng)abel后者用TextBrowser.當(dāng)用Label顯示時(shí),需要用setPixmap函數(shù),且該函數(shù)對(duì)應(yīng)傳入與圖像相關(guān) 的參數(shù)為圖像的數(shù)據(jù)部分;當(dāng)用TextBrowser顯示時(shí),直接用append函數(shù)即可。該函數(shù)對(duì)應(yīng)傳入與圖像相關(guān)的參數(shù)為圖像的文件名(要包含路 徑)。
  7. 顯示文本的控件為T(mén)extBrowser.
  8. 獲得spinBox的值是調(diào)用其value()函數(shù)。
  9. 獲得LineEdit的值是調(diào)用其text()函數(shù),然后轉(zhuǎn)換成相應(yīng)的數(shù)據(jù)類(lèi)型即可。

  10. ui中的close函數(shù)只是關(guān)閉窗口的顯示功能而已,并沒(méi)有delete掉里面的變量。

  11. QPalette為調(diào)色版,其顏色組分為3組,活動(dòng)組,非活動(dòng)組,

  12. 可用組;其中活動(dòng)組為當(dāng)前窗口所在組,非活動(dòng)組為其它窗口所在組,不可用組是由于某種原因暫時(shí)不能使用的組 。改變調(diào)色版的顏色可以使用setColor這個(gè)函數(shù),這個(gè)函數(shù)有2個(gè)重載函數(shù),其中參數(shù)ColorRole表示是更改哪個(gè)參數(shù);比如說(shuō)一般的背景色。

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

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

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

  16. 當(dāng)在TextBrowser中進(jìn)行圖片顯示時(shí),如果需要讓顯示圖片的窗口自適應(yīng)圖片的大小,可采用QTextBrowser下的 setFixedWidth()和setFixedHeight()函數(shù)來(lái)設(shè)置窗口尺寸,其參數(shù)是從圖片中獲取。當(dāng)然這個(gè)設(shè)置的窗口長(zhǎng)和寬已經(jīng)包括了右邊 和下邊的滾動(dòng)條,所以給參數(shù)的時(shí)候需要把這2者考慮進(jìn)去。

  17. 要對(duì)整個(gè)窗口的背景該色,且不改變其上面控件的背景色,則這時(shí)需用QPalette類(lèi)。且時(shí)需用Window作為背景色角色;如果用Base作為背景色角 色的話,那么它只會(huì)改變QTextEidt類(lèi)及其派生類(lèi)的背景色;如果用seStyleSheet,其用background-color的話,那么它會(huì) 把其上面的控件背景色全改了,且相應(yīng)的子窗口的也都改了。

  18. 在Qt中,將1個(gè)數(shù)值a轉(zhuǎn)換成文本,可采用,tr(“%1”).arg(a).也可采用QString::number(a).

  19. 實(shí)際運(yùn)行到這幾句代碼時(shí),并不是顯示完first,延時(shí)1s后顯示second,再延時(shí)1s后顯示third. 而是直接延時(shí)2秒,first,second,third同時(shí)顯示呢?

  20. 其原因在主線程GUI中不宜采用sleep()等函數(shù),否則會(huì)出現(xiàn)意想不到的結(jié)果。

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

  22. QtCreator中使用的是MinGW進(jìn)行編譯的,所以在windows下如果想要下載QtCreator就需要下載對(duì)應(yīng)mingw的版本,而不是vs的,否則是編譯不了的?;蛘咦约合螺dQt源碼庫(kù),用Cmake中選中MinGW重新編譯即可。

  23. 所以如果安裝Qt libraries 4.8.2 for Windows (minGW 4.4, 318 MB),則必須先安裝QtCreator,因?yàn)镼tCreator安裝過(guò)程中會(huì)自動(dòng)安裝MinGW,而Qt libraries 4.8.2 for Windows (minGW 4.4, 318 MB)的安裝又必須使用MinGW。因此這2者的順序不可顛倒。

  24. 但是自從QtCreator2.5.0以后,就不再捆綁MinGW了,需要用戶自行下載安裝。Qt官網(wǎng)給出的下載地址為ftp://ftp.qt./misc/MinGW-gcc440_1.zip.

  25. 當(dāng)然我們也可以用VS的編譯器進(jìn)行編譯,這樣裝了微軟的VS后我們?cè)赒tCreator中設(shè)置好微軟的編譯器目錄,然后在QtCreator中進(jìn)行編寫(xiě)代碼,編譯調(diào)試等.

  26. 在用微軟的調(diào)試器時(shí)可以裝一個(gè)dbg_x86_6.11.1.404.msi,裝完后QtCreator會(huì)自動(dòng)識(shí)別這個(gè)dbg調(diào)試器的.

  27. Qt中用來(lái)顯示圖片的控件為L(zhǎng)abel后者用TextBrowser.當(dāng)用Label顯示時(shí),需要用setPixmap函數(shù),且該函數(shù)對(duì)應(yīng)傳入與圖像相關(guān) 的參數(shù)為圖像的數(shù)據(jù)部分;當(dāng)用TextBrowser顯示時(shí),直接用append函數(shù)即可。該函數(shù)對(duì)應(yīng)傳入與圖像相關(guān)的參數(shù)為圖像的文件名(要包含路 徑)。

  28. 顯示文本的控件為T(mén)extBrowser.

  29. 獲得spinBox的值是調(diào)用其value()函數(shù)。

  30. 獲得LineEdit的值是調(diào)用其text()函數(shù),然后轉(zhuǎn)換成相應(yīng)的數(shù)據(jù)類(lèi)型即可。

  31. ui中的close函數(shù)只是關(guān)閉窗口的顯示功能而已,并沒(méi)有delete掉里面的變量。

  32. QPalette為調(diào)色版,其顏色組分為3組,活動(dòng)組,非活動(dòng)組,

  33. 可用組;其中活動(dòng)組為當(dāng)前窗口所在組,非活動(dòng)組為其它窗口所在組,不可用組是由于某種原因暫時(shí)不能使用的組 。改變調(diào)色版的顏色可以使用setColor這個(gè)函數(shù),這個(gè)函數(shù)有2個(gè)重載函數(shù),其中參數(shù)ColorRole表示是更改哪個(gè)參數(shù);比如說(shuō)一般的背景色。

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

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

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

  37. 當(dāng)在TextBrowser中進(jìn)行圖片顯示時(shí),如果需要讓顯示圖片的窗口自適應(yīng)圖片的大小,可采用QTextBrowser下的 setFixedWidth()和setFixedHeight()函數(shù)來(lái)設(shè)置窗口尺寸,其參數(shù)是從圖片中獲取。當(dāng)然這個(gè)設(shè)置的窗口長(zhǎng)和寬已經(jīng)包括了右邊 和下邊的滾動(dòng)條,所以給參數(shù)的時(shí)候需要把這2者考慮進(jìn)去。

  38. 要對(duì)整個(gè)窗口的背景該色,且不改變其上面控件的背景色,則這時(shí)需用QPalette類(lèi)。且時(shí)需用Window作為背景色角色;如果用Base作為背景色角 色的話,那么它只會(huì)改變QTextEidt類(lèi)及其派生類(lèi)的背景色;如果用seStyleSheet,其用background-color的話,那么它會(huì) 把其上面的控件背景色全改了,且相應(yīng)的子窗口的也都改了。

  39. 在Qt中,將1個(gè)數(shù)值a轉(zhuǎn)換成文本,可采用,tr(“%1”).arg(a).也可采用QString::number(a).

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

  41. 其中第一個(gè)參數(shù)為時(shí)隔多長(zhǎng)(單位為ms)執(zhí)行后面的event信號(hào)函數(shù),當(dāng)然該函數(shù)的函數(shù)名可以自己定義。這句代碼的意思是立即執(zhí)行執(zhí)行event()函數(shù)。和sleep()函數(shù)一樣,在Qt中也不能用opencv中的waitKey()函數(shù)來(lái)進(jìn)行延時(shí)。

  42. 用QT Creater編程,如果沒(méi)有自動(dòng)補(bǔ)全是很痛苦的事情,于是便查閱了QT的文檔,發(fā)現(xiàn)CTRL+SPACE是自動(dòng)補(bǔ)全的快捷鍵;
但是在 Creater里使用居然沒(méi)有效果,估計(jì)是輸入法切換的沖突(CTRL+SPACE是我中英文輸入的默認(rèn)快捷鍵)
于是尋求解決方法,在QT Creater->Tools->Options... 里找到environment->Keyboard,發(fā)現(xiàn)TextEditor.CompleteThis命令,其快捷鍵是Ctrl+Space;將其result掉,然后輸入Alt+/(Eclipse里習(xí)慣的~~)后應(yīng)用退出即可.

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

  44. 如果菜單下的action不能夠運(yùn)動(dòng)到toolbar上,則在toolbar上右擊,選擇separate toolbar,然后移動(dòng)即可。

45. setCentralWidget()函數(shù)是把控件布滿整個(gè)界面的語(yǔ)句。

  46. 在Qt程序其中的一個(gè)函數(shù)中,如果需要調(diào)用另一個(gè)窗口類(lèi)且顯示出來(lái),則有2種方法。其一是在本類(lèi)中定義一個(gè)全局變量,然后在這個(gè)函數(shù)中new一個(gè)對(duì)象。如下所示:

  void MainWindow::on_actionNew_Window_triggered()

  {

  my_dailog = new Dialog(this);

  my_dailog->show();

  }

  這種情況下建立的窗口時(shí)非模態(tài)的,且可以同時(shí)調(diào)出多個(gè)my_dialog窗口來(lái)。

  另外一種方法是在程序內(nèi)部定義一個(gè)類(lèi)對(duì)象,如下所示:

  void MainWindow::on_actionNew_Window_triggered()

  {

  Dialog my_dialog;

  my_dialog.setModal(false);

  my_dialog.exec();

  }

  但是不管其模態(tài)設(shè)置是否為true,該窗口都是模態(tài)的,即該窗口顯示出來(lái)時(shí)其它的窗口不能工作了。當(dāng)然此時(shí)只能顯示1個(gè)my_dialog了。

  47. Qt中的label控件對(duì)應(yīng)android中的是TextView控件。

  48. 如果想要窗口內(nèi)部的控件大小隨著窗口拉伸等變化而變化,則需要在布局中設(shè)置,點(diǎn)擊ui文件中的主體,然后選擇布局控件中滿足自己需求的一個(gè)即可。

  49. window下的路徑名需要用2個(gè)左斜杠或者1個(gè)右斜桿。即”/”或者””。

  50. 在界面中設(shè)置顯示的文字屬性,如果在cpp中被重新設(shè)置了,那么運(yùn)行時(shí)是以cpp中設(shè)置的最后的設(shè)置,因?yàn)檫@些屬性被覆蓋掉了.

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

  52. 一般信號(hào)中的toggled是指對(duì)應(yīng)的屬性為checkable,然后被鼠標(biāo)單擊了下而發(fā)射的。這個(gè)在復(fù)選按鈕和單選按鈕中比較常見(jiàn),但是在 PushButton中也是可以用的,將PushButton的屬性checkable設(shè)置為真,則運(yùn)行時(shí)鼠標(biāo)單擊一下,按鈕的顏色會(huì)變淡,再單擊一下又 會(huì)變亮,它是以顏色的的深淺來(lái)提醒它的toggle的。

菜單欄中的一個(gè)選項(xiàng),一般是用trigger來(lái)發(fā)射信號(hào)。

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

  54. 在LineEdit中有一個(gè)echoMode,里面可以選中password模式,則在LineEdit中輸入的內(nèi)容對(duì)用戶是不可見(jiàn)的,當(dāng)然對(duì)系統(tǒng)是可見(jiàn)的,我們可以將其內(nèi)容讀取出來(lái)。

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

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

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

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

  58. 頭文件和對(duì)應(yīng)的源文件可以同時(shí)include同一個(gè)頭文件。

  59. 用滑動(dòng)條觸發(fā)進(jìn)度條的實(shí)驗(yàn)中,至少有下面3種方法可以執(zhí)行。

  可以直接在界面設(shè)計(jì)的信號(hào)與槽中連接好對(duì)應(yīng)的信號(hào)與槽。無(wú)需任何代碼。

  在界面的構(gòu)造函數(shù)中用connect函數(shù)連接好信號(hào)與槽,也無(wú)需其他代碼。如下:

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

  可以在滑動(dòng)條值改變的槽函數(shù)中實(shí)現(xiàn),如下:

  void Dialog::on_horizontalSlider_valueChanged(int value)

  {

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

  }

  60. 讓狀態(tài)欄顯示文本不是采用setText()方法,而是采用showMessage().其第二個(gè)參數(shù)為顯示該內(nèi)容持續(xù)的時(shí)間,以毫秒為單位。

  61. 如果在Qt Creator中需要帶參數(shù)運(yùn)行,因?yàn)樵趍ain函數(shù)中經(jīng)常有argv這個(gè)變量傳入?yún)?shù),這可以在Qt Creator的左側(cè)Project一欄中—>Targets—>Desttop(中間偏上的位置)—>Run    —>Arguments中輸入需要附加的參數(shù)即可。

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

  63. Qt Gui界面的顯示是在程序的構(gòu)造函數(shù)執(zhí)行完后完成的,所以如果在構(gòu)造函數(shù)中對(duì)界面有動(dòng)態(tài)的輸出效果我們是看不到的,只能都構(gòu)造函數(shù)執(zhí)行完了后才能看到最后 的結(jié)果。那么怎么辦才能做到在構(gòu)造函數(shù)結(jié)束時(shí)自動(dòng)調(diào)用某一程序來(lái)完成我們想要看到的動(dòng)態(tài)初始化效果呢?這里可以使用QTimer下的 singleShot()函數(shù)。

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

  65. 其中第一個(gè)參數(shù)為時(shí)隔多長(zhǎng)(單位為ms)執(zhí)行后面的event信號(hào)函數(shù),當(dāng)然該函數(shù)的函數(shù)名可以自己定義。這句代碼的意思是立即執(zhí)行執(zhí)行event()函數(shù)。

和sleep()函數(shù)一樣,在Qt中也不能用opencv中的waitKey()函數(shù)來(lái)進(jìn)行延時(shí)。

  66. 用QT Creater編程,如果沒(méi)有自動(dòng)補(bǔ)全是很痛苦的事情,于是便查閱了QT的文檔,發(fā)現(xiàn)CTRL+SPACE是自動(dòng)補(bǔ)全的快捷鍵;
但是在 Creater里使用居然沒(méi)有效果,估計(jì)是輸入法切換的沖突(CTRL+SPACE是我中英文輸入的默認(rèn)快捷鍵)
于是尋求解決方法,在QT Creater->Tools->Options... 里找到environment->Keyboard,發(fā)現(xiàn)TextEditor.CompleteThis命令,其快捷鍵是Ctrl+Space;將其result掉,然后輸入Alt+/(Eclipse里習(xí)慣的~~)后應(yīng)用退出即可.

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

  68. 如果菜單下的action不能夠運(yùn)動(dòng)到toolbar上,則在toolbar上右擊,選擇separate toolbar,然后移動(dòng)即可。

  69. setCentralWidget()函數(shù)是把控件布滿整個(gè)界面的語(yǔ)句。

  70. 在Qt程序其中的一個(gè)函數(shù)中,如果需要調(diào)用另一個(gè)窗口類(lèi)且顯示出來(lái),則有2種方法。其一是在本類(lèi)中定義一個(gè)全局變量,然后在這個(gè)函數(shù)中new一個(gè)對(duì)象。如下所示:

  void MainWindow::on_actionNew_Window_triggered()

  {

  my_dailog = new Dialog(this);

  my_dailog->show();

  }

  這種情況下建立的窗口時(shí)非模態(tài)的,且可以同時(shí)調(diào)出多個(gè)my_dialog窗口來(lái)。

  另外一種方法是在程序內(nèi)部定義一個(gè)類(lèi)對(duì)象,如下所示:

  void MainWindow::on_actionNew_Window_triggered()

  {

  Dialog my_dialog;

  my_dialog.setModal(false);

  my_dialog.exec();

  }

  但是不管其模態(tài)設(shè)置是否為true,該窗口都是模態(tài)的,即該窗口顯示出來(lái)時(shí)其它的窗口不能工作了。當(dāng)然此時(shí)只能顯示1個(gè)my_dialog了。

  Qt中的label控件對(duì)應(yīng)android中的是TextView控件。

  71. 如果想要窗口內(nèi)部的控件大小隨著窗口拉伸等變化而變化,則需要在布局中設(shè)置,點(diǎn)擊ui文件中的主體,然后選擇布局控件中滿足自己需求的一個(gè)即可。

  72. window下的路徑名需要用2個(gè)左斜杠或者1個(gè)右斜桿。即”/”或者””。

  73. 在界面中設(shè)置顯示的文字屬性,如果在cpp中被重新設(shè)置了,那么運(yùn)行時(shí)是以cpp中設(shè)置的最后的設(shè)置,因?yàn)檫@些屬性被覆蓋掉了.

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

  75. 一般信號(hào)中的toggled是指對(duì)應(yīng)的屬性為checkable,然后被鼠標(biāo)單擊了下而發(fā)射的。這個(gè)在復(fù)選按鈕和單選按鈕中比較常見(jiàn),但是在 PushButton中也是可以用的,將PushButton的屬性checkable設(shè)置為真,則運(yùn)行時(shí)鼠標(biāo)單擊一下,按鈕的顏色會(huì)變淡,再單擊一下又 會(huì)變亮,它是以顏色的的深淺來(lái)提醒它的toggle的。

菜單欄中的一個(gè)選項(xiàng),一般是用trigger來(lái)發(fā)射信號(hào)。

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

  77. 在LineEdit中有一個(gè)echoMode,里面可以選中password模式,則在LineEdit中輸入的內(nèi)容對(duì)用戶是不可見(jiàn)的,當(dāng)然對(duì)系統(tǒng)是可見(jiàn)的,我們可以將其內(nèi)容讀取出來(lái)。

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

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

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

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

  81. 頭文件和對(duì)應(yīng)的源文件可以同時(shí)include同一個(gè)頭文件。

  82. 用滑動(dòng)條觸發(fā)進(jìn)度條的實(shí)驗(yàn)中,至少有下面3種方法可以執(zhí)行。

  可以直接在界面設(shè)計(jì)的信號(hào)與槽中連接好對(duì)應(yīng)的信號(hào)與槽。無(wú)需任何代碼。

  在界面的構(gòu)造函數(shù)中用connect函數(shù)連接好信號(hào)與槽,也無(wú)需其他代碼。如下:

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

  可以在滑動(dòng)條值改變的槽函數(shù)中實(shí)現(xiàn),如下:

  void Dialog::on_horizontalSlider_valueChanged(int value)

  {

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

     }

  83. 讓狀態(tài)欄顯示文本不是采用setText()方法,而是采用showMessage().其第二個(gè)參數(shù)為顯示該內(nèi)容持續(xù)的時(shí)間,以毫秒為單位。

  84. 如果在Qt Creator中需要帶參數(shù)運(yùn)行,因?yàn)樵趍ain函數(shù)中經(jīng)常有argv這個(gè)變量傳入?yún)?shù),這可以在Qt Creator的左側(cè)Project一欄中—>Targets—>Desttop(中間偏上的位置)—>Run—>Arguments中輸入需要附加的參數(shù)即可。

  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\等,否則一直報(bào)錯(cuò)。
    另外還有一點(diǎn)是Qt中的目錄不能包含空格,所以安裝的opencv目錄前如果有Program Files是不行的,為此我還專門(mén)把opencv移到了另一個(gè)目錄,2個(gè)opencv同時(shí)用。
  86. QTextBrowser中append方法是在當(dāng)前框下一行加入內(nèi)容,可以是文字或圖片等。它本身已經(jīng)固定了換行模式,取消不了。

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

     insertHtml和append一樣,可以加入文本或圖片等,它不會(huì)覆蓋掉其內(nèi)容,但是默認(rèn)的也是從下一行開(kāi)始的,即有換行模式,不過(guò)該自動(dòng)換行模式可以被取消。采用下面的語(yǔ)句:

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

     同理,如果要恢復(fù)自動(dòng)換行模式,采用:

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

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

           1. 先下載glut庫(kù)http://www./resources/libraries/glut/glutdlls37beta.zip。

           2.將下載下來(lái)的文件解壓,將glut32.lib和glut.lib兩個(gè)lib文件移到qt目錄下的./lib文件夾中。

           3.將glut.dll和glut32.dll兩個(gè)動(dòng)態(tài)鏈接庫(kù)移到C:\windows\system32中。

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

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

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

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

  88.  在Qt中使用定時(shí)器的方法:

     法一:只需啟動(dòng)定時(shí)器,例如startTimer(5);這里是設(shè)置5ms定時(shí),然后復(fù)寫(xiě)timerEvent(QTimerEvent*)函數(shù)即可。

     法二:用如下代碼進(jìn)行設(shè)置

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

  94. QRectF為一個(gè)float精度的矩形框。

  95. QPainter為一個(gè)繪圖裝置,我們可以在上面進(jìn)行繪圖,繪圖的對(duì)象為widget或者printer。

  96. 畫(huà)筆是用來(lái)繪制線型的,主要樣式有3個(gè)方面:筆帽,結(jié)合點(diǎn)和線型。

  97. 畫(huà)刷是用來(lái)畫(huà)填充封閉的幾何圖形的,主要有2個(gè)參數(shù)設(shè)置:顏色和樣式。

  98. 如果編譯時(shí)出現(xiàn)Qt自帶的源代碼處的錯(cuò)誤提示,比如說(shuō):qtextoption.h語(yǔ)法錯(cuò)誤: 缺少“;”(在標(biāo)識(shí)符“QtGuiModule”的前面)

  99. 定位到錯(cuò)誤的地方時(shí),是Qt系統(tǒng)的源碼,按照道理系統(tǒng)源碼時(shí)不會(huì)出錯(cuò)的,這時(shí)有能是自己寫(xiě)的一個(gè)類(lèi)繼承了系統(tǒng)提供的類(lèi),而這個(gè)類(lèi)在頭文件的括號(hào)中沒(méi)有使用分號(hào)所致.

  100. 在Qt中使用定時(shí)器功能有2中方法,第一個(gè)是使用QTimer類(lèi)。第二個(gè)是使用QObject子類(lèi)的重載函數(shù)timerEvent()。在使用第1種方法 時(shí)需要將設(shè)置定時(shí)器的信號(hào)與槽連接,然后使用start函數(shù)來(lái)啟動(dòng)該定時(shí)器,使用stop方法來(lái)停止定時(shí)器。在使用第2種方法時(shí),只需要調(diào)用系統(tǒng)的 startTimer()函數(shù)就可以了。

  101. QTimer::singleShot()方法可以完成在時(shí)間間隔完成后執(zhí)行后面的槽函數(shù),相當(dāng)于個(gè)直接的延時(shí)函數(shù),使用起來(lái)應(yīng)該還是蠻方便的。

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

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

  104. qreal 其實(shí)就是double型。

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

  106. arg()中的參數(shù)是QString型,則其對(duì)應(yīng)的百分號(hào)需要用單引號(hào)括起來(lái)。

  107. Qt::DecorationRole是Qt::ItemDataRole中的一種, Qt::ItemDataRole表示每一個(gè)model中的Item都有自己的一個(gè)數(shù)據(jù)集,且有自己的特色。這些特點(diǎn)用來(lái)指定模型中的哪一種數(shù)據(jù)類(lèi)型將被使用。而Qt::DecorationRole指的是說(shuō)數(shù)據(jù)將以圖表的形式來(lái)呈現(xiàn)。

  108. QAbstractItemView為一個(gè)抽象item視圖類(lèi),里面有很多方法可以重寫(xiě)。

  109. QPaint是一個(gè)繪圖類(lèi),可以設(shè)置畫(huà)筆,畫(huà)刷,字體。

  110. 在設(shè)計(jì)用戶名密碼登陸時(shí),如果用戶名和密碼都正確,則會(huì)調(diào)用調(diào)用父類(lèi)的QDialog::accept()槽函數(shù),該函數(shù)實(shí)現(xiàn)關(guān)閉當(dāng)前對(duì)話框,設(shè)置對(duì)話框的運(yùn)行結(jié)果為QDialog::Accepted,并發(fā)送QDialog::finished(int result)信號(hào)。

  111. 增加StackWidget頁(yè)面的方法,在StackWidget上鼠標(biāo)右擊,選擇insert page,然后繼續(xù)選擇在本頁(yè)之前或者之后加入頁(yè)碼。

  112. QAction對(duì)象使用setText()方法時(shí),如果在對(duì)象的構(gòu)造函數(shù)中已經(jīng)有了其文字顯示,那么action上面顯示的就是 構(gòu)造函數(shù)中的text文本。這里的setText文本有2個(gè)作用,第一個(gè)是如果該action對(duì)應(yīng)到了菜單欄中,則菜單欄會(huì)自動(dòng)將其顯示出來(lái);第二個(gè)時(shí)如 果構(gòu)造函數(shù)中沒(méi)有設(shè)置文本內(nèi)容,則該action會(huì)顯示setText()方法設(shè)置的內(nèi)容,當(dāng)然了,如果action設(shè)置了圖標(biāo),該文本內(nèi)容就被覆蓋了, 退化為文本提示了。

  113. cellClicked(int, int)信號(hào)是當(dāng)表格中的一個(gè)cell單元被單擊時(shí)發(fā)出的。它的兩個(gè)參數(shù)分別為表格中cell的行號(hào)和列號(hào)。

  114. 可以使用frameGeometry()來(lái)獲得程序中的主界面,然后該界面的定位函數(shù)可以獲得與主界面的相對(duì)位置,比如說(shuō)frameGeometry().bottomLeft()就是獲得主界面的左下方的位置。

  115. 當(dāng)自己定義了的一個(gè)類(lèi),該類(lèi)有對(duì)應(yīng)的頭文件和源文件。如果在第二個(gè)類(lèi)的頭文件中藥使用到第一個(gè)類(lèi),則可以不用包含第一個(gè)類(lèi)的頭文件,直接用class關(guān)鍵字聲明就可以了,在第二個(gè)類(lèi)的源文件中則需要包含第一個(gè)類(lèi)的頭文件,因?yàn)檫@里需要使用第一個(gè)類(lèi)對(duì)象的成員方法。

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

 117. Qt中常見(jiàn)的類(lèi)的繼承總結(jié):

  如果需要設(shè)計(jì)界面,且需要菜單欄,工具欄,狀態(tài)欄等,一般繼承QMainWidget類(lèi)。

  如果需要界面,不需要菜單欄,工具欄,狀態(tài)欄等,一般繼承QDialog類(lèi)。

  如果需要使用自定義視圖來(lái)畫(huà)圖形,則可以繼承QAbstractItem類(lèi)。

  如果需要自己設(shè)計(jì)場(chǎng)景,比如游戲開(kāi)發(fā)的時(shí)候,可以繼承QGraphicsView類(lèi)。

  如果需要自己制作一個(gè)小圖形視圖,可以考慮繼承QGraphicsObject類(lèi),當(dāng)將這些小視圖構(gòu)成一個(gè)視圖組時(shí),該組的類(lèi)可以繼承QGraphicsItemGroup類(lèi)和QObject類(lèi)。

  一般的界面設(shè)計(jì)也可以繼承QWidget類(lèi)。

  一般的文本類(lèi)可以繼承QLabel,比如在設(shè)計(jì)音樂(lè)播放器時(shí)的顯示桌面歌詞的類(lèi)。

118. 在QtCreator的使用中,有時(shí)候會(huì)出現(xiàn)兩個(gè)尖括號(hào)在一起的情況,這時(shí)候沒(méi)有語(yǔ)法錯(cuò)誤,但是QtCreator這個(gè)編輯環(huán)境會(huì)在你的代碼下出現(xiàn)個(gè)紅色的波紋,讓人看起來(lái)非常不舒服。例如:

 

   解決方法非常簡(jiǎn)單,即把兩個(gè)尖括號(hào)中間不要緊挨著,用一個(gè)空格號(hào)隔開(kāi)一下即可,這時(shí)候紅色的波紋警告線就消失了。


轉(zhuǎn)載:

http://www.cnblogs.com/tornadomeet/tag/總結(jié)系列/

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類(lèi)似文章 更多