成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Qt 編程點滴 初學者必看 (6)

移動開發
本文介紹的是Qt 編程點滴,作為一名新手,我建議必須看一看。編程那些事,只有編程人員自己明白!所以推薦本文。

Qt 編程繼續為大家講解,還是接著文章Qt 編程點滴 初學者必看 (5) ,繼續介紹,說編程那些細節。由于本話題是一節一節為大家介紹的,所以更多內容請看末尾編輯推薦。

移交控制權

  1. qApp.processEvents(); 

相當于delphi中的application.processmessage;

Qt Script Debugger — 用于調試Qt Script的工具,可以單步運行,查看輸出等。

Qt文檔里有很詳細的一篇專門講這個的,有興趣的來看下: Qt Script Debugger Manual

Com口大于10需經特殊處理: \\\\.\\COMxx   如  \\\\.\\COM10 等價于 COM10;

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

  1. label = new QLabel(”www.cuteqt.com”);  
  2. label->setAttribute(Qt::WA_TranslucentBackground, false); //設置為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()分別對應以上三種type。

QGraphicsView的updateSceneRect

有些時候,當你往一個QGraphicsView中添加一個空的QGraphicsScene并且批量地在這個QGraphicsScene中添加上大量的自定義的圖形對象時,會發現QGraphicsView顯示出來的圖像有些偏移:有足夠的空間來顯示這些圖形,可是有些圖形畫到QGraphicsView的邊緣去了以致于沒有完全顯示出來。

這是因為當前的消息循環還沒有處理完畢,因此QGraphicsView的槽“updateSceneRect”還沒有被調用。這樣它的sceneRect沒有刷新,就沒有將更改過大小的scene移動到中心點了。

解決辦法是在添加完畢圖形對象之后立即調用updateSceneRect,使之刷新sceneRect。

QGraphicsView繪圖問題

  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函數中顯示出來,線會正常的畫出來.但一但有其它窗體作為主窗體,比如MainWindow,然后在其構造函數或其它函數中調用這這段代碼,view可以顯示出來,但線不會被畫出來.(無論是作為單獨的窗體還是作為MainWindow的CentralWidget都不會被畫出來,看了sample里面的幾乎完全一樣的代碼卻正常

解決方法:

scene是局部變量,函數結束后被銷毀了,應該用

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

但問題是為什么main函數中這樣用不會出問題?

因為你那個main函數沒有結束,這個函數是要到程序結束時結束的,所以那個臨時變量沒有刪除,

這樣用就沒有問題。其他的函數調用完就結束了。

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

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

  1. class CallingCardEdtDlg:public QDialog //如此繼承自QMainWindow或QWidget則QLineEdit獲取不了  
  2.  
  3.  //焦點并且不能輸入,但如果繼承自QDialog就沒問題了  
  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. }     

事件原型申明中的類型定義不能加默認值。

小結:本文主要介紹了在Qt 窗體的使用,通過Qt 編程點滴介紹,也給自己提高了編程過程中需要注意的細節問題,由于本話題是一節一節為大家展現的,所以更多內容,請看編輯推薦。

責任編輯:zhaolei 來源: 互聯網
相關推薦

2011-06-17 14:12:32

Qt

2011-06-17 15:06:14

Qt

2011-06-17 14:29:55

Qt

2011-06-17 15:32:28

Qt

2011-06-17 14:41:56

Qt

2011-06-17 15:25:18

Qt

2011-06-17 15:37:42

Qt

2011-06-17 15:44:25

Qt

2011-06-17 14:54:31

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-07-26 17:55:16

iPhone Runtime

2011-08-04 18:01:07

IOS Cocoa Touc

2009-10-29 09:19:59

ADO.NET

2009-11-17 15:33:26

PHP數組元素

2009-10-22 16:46:03

VB.NET初步知識

2009-11-23 10:29:43

CISCO路由器教程
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 中文字幕 国产精品 | 国产精品久久 | 超碰av人人| 羞羞免费网站 | 国产91在线播放 | 免费国产黄网站在线观看视频 | 亚洲一区二区三区久久久 | 无码一区二区三区视频 | 成人小视频在线 | 亚洲免费视频网站 | 国产一区二区在线视频 | 日韩精品一区二区三区 | 久久免费精品 | 黄网站免费在线 | 亚洲一区二区三区在线视频 | 精品国产一区三区 | 中文字幕在线观看视频网站 | av天天干 | 国产精品久久久久影院色老大 | 亚洲第一女人av | 国产成人久久精品一区二区三区 | 天天干夜夜操 | 国产在线中文字幕 | 日韩视频 中文字幕 | 日韩亚洲视频 | 中文字幕亚洲一区二区va在线 | 成人影院在线视频 | 黄色国产 | 欧美激情区 | 干一干操一操 | 亚洲第一视频网站 | 亚洲精品久久久一区二区三区 | www.av在线| 日韩av免费在线电影 | 国产高清久久久 | 欧美一区二区三区在线看 | 欧美日韩福利视频 | 日中文字幕在线 | 夜夜操天天干 | 国产资源一区二区三区 | 久久久免费精品 |