本文要解決的Qt調試問題截圖如下:
起因:在代碼中添加類型爲QColor的二維數組,存儲圖片每個像素。
現象:調試時出現上圖所示錯誤。
原因:經過百度以及反覆查看代碼,發現在代碼中,有數組越界的情況。因爲定義的時候,數組的兩個維度大小不一樣,而在實
現 QWidget的重畫事件時,因爲座標系的差別,使得兩個維度的順序對換,使得發生數組越界的情況。
詳細解釋:在程序中我定義的數組是QColor color [ Height ] [ Width ], 我的本意是Height代表圖片的高度,Height的初值爲400;Width
代表圖片的高度,Width的初值爲600。
然而在Qt的paintEvent事件中,QPainter中的 drawPoint( int x,int y )函數中,x表示的是圖片的橫座標,對應數組的Width;
y表示圖片的縱座標,對應數組的Height。
由於在剛開始沒有意識到座標系與數組維度的對應關係,使得對應錯誤,導致越界。
如有疑問,請留言!如有問題,求指正!