自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Qt 編程點(diǎn)滴 初學(xué)者必看 (6)

移動(dòng)開(kāi)發(fā)
本文介紹的是Qt 編程點(diǎn)滴,作為一名新手,我建議必須看一看。編程那些事,只有編程人員自己明白!所以推薦本文。

Qt 編程繼續(xù)為大家講解,還是接著文章Qt 編程點(diǎn)滴 初學(xué)者必看 (5) ,繼續(xù)介紹,說(shuō)編程那些細(xì)節(jié)。由于本話題是一節(jié)一節(jié)為大家介紹的,所以更多內(nèi)容請(qǐng)看末尾編輯推薦。

移交控制權(quán)

  1. qApp.processEvents(); 

相當(dāng)于delphi中的application.processmessage;

Qt Script Debugger — 用于調(diào)試Qt Script的工具,可以單步運(yùn)行,查看輸出等。

Qt文檔里有很詳細(xì)的一篇專門講這個(gè)的,有興趣的來(lái)看下: Qt Script Debugger Manual

Com口大于10需經(jīng)特殊處理: \\\\.\\COMxx   如  \\\\.\\COM10 等價(jià)于 COM10;

透明的控件的TranslucentBackground屬性為true (繼承了parent的屬性),而非透明的控件則在代碼中強(qiáng)制將TranslucentBackground設(shè)為了false,這樣就造就了有意思的結(jié)果。 代碼片段如下:

  1. label = new QLabel(”www.cuteqt.com”);  
  2. label->setAttribute(Qt::WA_TranslucentBackground, false); //設(shè)置為false完全不透明  
  3. label->setAutoFillBackground(true); 

怎樣將日志輸出到文件中

  1. void myMessageOutput( QtMsgType type, const char *msg )  
  2. {  
  3.     switch ( type ) {  
  4.         case QtDebugMsg:  
  5.             //寫入文件;  
  6.             break;  
  7.         case QtWarningMsg:  
  8.             break;  
  9.         case QtFatalMsg:  
  10.             abort();  
  11.     }  
  12. }  
  13.  
  14. int main( int argc, char** argv )  
  15. {  
  16.     QApplication app( argc, argv );  
  17.     qInstallMsgHandler( myMessageOutput );  
  18.     ......  
  19.     return app.exec();  

qDebug(), qWarning(), qFatal()分別對(duì)應(yīng)以上三種type。

QGraphicsView的updateSceneRect

有些時(shí)候,當(dāng)你往一個(gè)QGraphicsView中添加一個(gè)空的QGraphicsScene并且批量地在這個(gè)QGraphicsScene中添加上大量的自定義的圖形對(duì)象時(shí),會(huì)發(fā)現(xiàn)QGraphicsView顯示出來(lái)的圖像有些偏移:有足夠的空間來(lái)顯示這些圖形,可是有些圖形畫到QGraphicsView的邊緣去了以致于沒(méi)有完全顯示出來(lái)。

這是因?yàn)楫?dāng)前的消息循環(huán)還沒(méi)有處理完畢,因此QGraphicsView的槽“updateSceneRect”還沒(méi)有被調(diào)用。這樣它的sceneRect沒(méi)有刷新,就沒(méi)有將更改過(guò)大小的scene移動(dòng)到中心點(diǎn)了。

解決辦法是在添加完畢圖形對(duì)象之后立即調(diào)用updateSceneRect,使之刷新sceneRect。

QGraphicsView繪圖問(wèn)題

  1. QGraphicsScene scene;  
  2. scene.setSceneRect(0, 0, 800, 800);  
  3. QGraphicsLineItem *line = new QGraphicsLineItem(0, 0, 500, 500);  
  4. scene.addItem(line);  
  5. QGraphicsView *view = new QGraphicsView(&scene); 

上面這段代碼,如果把view作為主窗體在main函數(shù)中顯示出來(lái),線會(huì)正常的畫出來(lái).但一但有其它窗體作為主窗體,比如MainWindow,然后在其構(gòu)造函數(shù)或其它函數(shù)中調(diào)用這這段代碼,view可以顯示出來(lái),但線不會(huì)被畫出來(lái).(無(wú)論是作為單獨(dú)的窗體還是作為MainWindow的CentralWidget都不會(huì)被畫出來(lái),看了sample里面的幾乎完全一樣的代碼卻正常

解決方法:

scene是局部變量,函數(shù)結(jié)束后被銷毀了,應(yīng)該用

  1. QGraphicsScene *scene = new QGraphicsScene(this); 

但問(wèn)題是為什么main函數(shù)中這樣用不會(huì)出問(wèn)題?

因?yàn)槟隳莻€(gè)main函數(shù)沒(méi)有結(jié)束,這個(gè)函數(shù)是要到程序結(jié)束時(shí)結(jié)束的,所以那個(gè)臨時(shí)變量沒(méi)有刪除,

這樣用就沒(méi)有問(wèn)題。其他的函數(shù)調(diào)用完就結(jié)束了。

查出通訊錄中代理不能取得焦點(diǎn)的BUG原因:MainWindow 要是繼續(xù)自QMainWindow或QWidget就取不了焦點(diǎn),但如果繼承自QDialog則可以取得焦點(diǎn)

窗體CallingCardEdtFrm(繼承自QWidget),在此窗體上創(chuàng)建個(gè)組件QListWidget,QListWidget中的QListWidgetItem(里面有個(gè)QLineEdit編輯組件)的繪制與
顯示使用代理實(shí)現(xiàn)

  1. class CallingCardEdtDlg:public QDialog //如此繼承自QMainWindow或QWidget則QLineEdit獲取不了  
  2.  
  3.  //焦點(diǎn)并且不能輸入,但如果繼承自QDialog就沒(méi)問(wèn)題了  
  4. {  
  5.  Q_OBJECT  
  6.  public:  
  7.    CallingCardEdtDlg(QWidget*);  
  8.  
  9. };  
  10. CallingCardEdtDlg::CallingCardEdtDlg(QWidget* parent)  
  11.         :QDialog(parent)  
  12. {  
  13.     CallingCardEdtForm * frm = new CallingCardEdtForm(0);  
  14.     frm->setGeometry(0,0,200,200);  
  15.  
  16.     QStackedWidget* stackedWidget = new QStackedWidget(0);  
  17.     stackedWidget->addWidget(frm);  
  18.     stackedWidget->setCurrentIndex(0);  
  19.     QGraphicsScene* scene = new  QGraphicsScene();  
  20.     QGraphicsView* view = new QGraphicsView(scene);  
  21.     view->setParent(this);  
  22.     QGraphicsProxyWidget* proxyWidget = new QGraphicsProxyWidget();  
  23.     proxyWidget->setCacheMode(QGraphicsItem::DeviceCoordinateCache);  
  24.     proxyWidget->setWidget(stackedWidget);  
  25.     scene->addItem(proxyWidget);  
  26.  
  27.     //view->resize(200,200);  
  28.     view->setRenderHints(QPainter::Antialiasing | QPainter::SmoothPixmapTransform);  
  29.     //view->setBackgroundBrush(QPixmap(":/No-Ones-Laughing-3.jpg"));  
  30.     view->setCacheMode(QGraphicsView::CacheBackground);  
  31.     view->setViewportUpdateMode(QGraphicsView::BoundingRectViewportUpdate);  
  32.     view->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);  
  33.     view->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);  
  34.     view->setBackgroundBrush(QColor("#151C28"));//  
  35. }     

事件原型申明中的類型定義不能加默認(rèn)值。

小結(jié):本文主要介紹了在Qt 窗體的使用,通過(guò)Qt 編程點(diǎn)滴介紹,也給自己提高了編程過(guò)程中需要注意的細(xì)節(jié)問(wèn)題,由于本話題是一節(jié)一節(jié)為大家展現(xiàn)的,所以更多內(nèi)容,請(qǐng)看編輯推薦。

責(zé)任編輯:zhaolei 來(lái)源: 互聯(lián)網(wǎng)
相關(guān)推薦

2011-06-17 14:29:55

Qt

2011-06-17 14:12:32

Qt

2011-06-17 15:06:14

Qt

2011-06-17 15:32:28

Qt

2011-06-17 15:25:18

Qt

2011-06-17 15:44:25

Qt

2011-06-17 15:37:42

Qt

2011-06-17 14:54:31

Qt

2011-06-17 14:41:56

Qt

2011-09-16 09:38:19

Emacs

2011-06-27 14:56:46

Qt Designer

2011-09-08 10:38:37

Widget

2011-08-24 17:05:01

Lua

2013-04-23 10:51:15

Linux壓縮

2011-08-04 18:01:07

IOS Cocoa Touc

2009-10-29 09:19:59

ADO.NET

2011-07-26 17:55:16

iPhone Runtime

2009-11-17 15:33:26

PHP數(shù)組元素

2009-10-22 16:46:03

VB.NET初步知識(shí)

2009-12-02 10:01:54

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)