2017-07-18 57 views
0

我試圖使用比例(QREAL的x,QREAL y)的方法/函數的圖形視圖按比例繪製一個像素映射在圖形查看窗口小部件。下面我附上了我的嘗試代碼。當我執行該程序就會顯示我的像素圖,但只要我移動水平滑塊的像素圖消失,圖形視圖只顯示一個空白頁。註釋掉的部分是我嘗試過的所有東西,但產生了相同的結果。我不能完全肯定,如果縮放圖形視圖將擴大一切圖形視圖,我以爲這樣,但找不到任何從文檔混凝土。縮放GraphicsView的widget帶滑塊當顯示一個像素圖

*有一點需要注意的是,即使在移動滾動條時出現白色屏幕,但我仍然可以更新y軸滾動條(作爲一個像素圖比圖形控件稍大),但是一個空白的圖形視圖仍顯示

* PixMapView是顯卡的名稱查看窗口小部件

void CanvasTest::on_horizontalSlider_valueChanged(int value) 
{ 
    //int scaleX = value/(ui->horizontalSlider->maximum())*2; 
    //Graph is updating and Y scroll bar is updating to show for it 
    //int scaleY = ui->verticalSlider->value(); 
    QGraphicsScene* scene = ui->PixMapView->scene(); 
    ui->PixMapView->scale(value/10, 1); 

    ui->PixMapView->setScene(scene); 
    ui->PixMapView->show(); 
} 

回答

0

有使用整數,這截斷問題代碼也使用靜態變量來跟蹤以前的比例值。

static float valueTracker = 1;\ 
static float valueTracker1 = 1; 
static int count = 1; 

bool order; 
if (count%2 == 1) 
{ 
    valueTracker = newSliderValue; 
    order = 0; 
} 
else 
{ 
    valueTracker1 = newSliderValue; 
    order = 1; 
} 
if(valueTracker == valueTracker1 || valueTracker == 0 || valueTracker1 == 0) 
{ 
    count++; 
    return; 
} 
else if(order == 0) 
{ 
    ui->PixMapView->scale(((valueTracker/valueTracker1)), 1); 
} 

else if(order == 1) 
{ 
    ui->PixMapView->scale(((valueTracker1/valueTracker)), 1); 
} 

count++;