2012-06-07 24 views
0

好吧,我基本上有一個圖形場景隨機放置的圖形項目。我打開一個窗口並顯示這些項目。當我調整窗口大小時,我希望這些項目保持相同的大小,但重新定位與窗口大小成比例。我如何做到這一點是我subclassed圖形視圖,然後當有一個resize事件,它發送resize對象到我的graphicsscene對象。當時我能夠做這樣的事情:在窗口調整大小的圖形項目resize

double scaleX = double(event->size().width())/double(event->oldSize().width()); 
double scaleY = double(event->size().height())/double(event->oldSize().height()); 

然後我用這些值來做到這一點:

derivedPointItem->setPos(derivedPointItem->pos().x() * scaleX, 
          derivedPointItem->pos().y() * scaleY); 

該工程確定,但如果我調整窗口的大小非常小的是不完全正確或大。我認爲問題是,graphicsscene矩形和圖形視圖矩形是不一樣的或什麼的。此外,我有一個調整窗口大小的背景:

void roiwindow::drawBackground(QPainter* painter, const QRectF& rect) 
{ 
    this->setSceneRect(0,0,rect.width(),rect.height()); 
    painter->save(); 
    painter->drawImage(rect, *refimage); 
    painter->restore(); 
} 

這是我在編寫程序時需要的東西。另外,它允許我查看調整大小是否工作。我基本上可以將背景設置爲多邊形,然後將點放置在多邊形的邊上。當我調整圖像的大小時,點不再位於多邊形的頂點,儘管它們有點接近。任何人都知道有更好的方法來做到這一點或解決它的方法嗎?謝謝。

編輯:這是我的工作項目:

dropbox.com/s/myxi8kvdl7x9ye2/ncorr.tar.gz

+0

以下是我正在研究的項目:「https://www.dropbox.com/s/myxi8kvdl7x9ye2/ncorr.tar.gz」另外,我的意思是將其位置按比例重新定位到窗口大小。但是,項目本身的大小將保持不變。希望這可以解決問題。謝謝。另外,要使用該程序只需執行file> upload reference,然後單擊「set roi」。調整窗口大小,你會明白我的意思。 – Justin

+0

還有一件事。我基本上只是試圖從matlab重新創建impoly。另外,我一直在ubuntu上做這個,希望它適用於你使用的任何系統......廢話,還有一件事。關閉roi只需點擊右鍵。 – Justin

回答

1

這種方法確實可以工作(雖然我不知道這是否是在最好的方法來使用...)。無論如何,它最終是由於setPos()函數而導致的編碼錯誤。我的程序中的setPos()函數通過指定圖像左上角的座標而不是中心來工作。這最終導致一些錯誤。