2012-04-16 67 views
4

我有一個QGraphicsView「垂直滾動條策略」ScrollBarAlwaysOff「。問題是,當我調整視圖的大小(通過QSplitter或僅調整窗口大小)時,視圖右側會出現一個空白區域。這裏有一個例子紅色背景和黑色QGraphicsRectItem:QGraphicsView滾動條策略不按預期工作

#include <QtGui> 

class MainWindow : public QMainWindow 
{ 
public: 
    MainWindow() 
    { 
     QGraphicsScene *scene = new QGraphicsScene(this); 
     QRectF rect(-100, -100, 200, 200); 
     QGraphicsRectItem *rectItem = new QGraphicsRectItem(rect); 
     rectItem->setBrush(QBrush(Qt::black)); 
     scene->addItem(rectItem); 
     scene->setSceneRect(rect); //commenting this out doesn't make a difference 

     QGraphicsView *view = new QGraphicsView(this); 
     view->setBackgroundBrush(QBrush(Qt::red)); 
     view->setTransformationAnchor(QGraphicsView::AnchorViewCenter); 
     view->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); 
     view->setScene(scene); 

     setCentralWidget(view); 
    } 
}; 

int main(int argc, char *argv[]) 
{ 
    QApplication a(argc, argv); 
    MainWindow w; 
    w.show(); 
    return a.exec(); 
} 

這裏的問題是什麼樣子:

image of the problem

我該如何解決這個問題?

編輯:點擊這裏,使畫面有點大:http://i.stack.imgur.com/HeWHJ.png

+1

不幸的是,我不能在PyQt中重現這種行爲。使用PyQt 4.9.1和Qt 4.8.1。對於我來說,當它小於QGraphicsItem的大小時,我會得到恆定的黑色。顯然,當它大於QGraphicItem的大小時,會顯示紅色 – jdi 2012-04-16 19:48:19

+0

@jdi我感謝您檢查它。我正在使用4.8.0。我會更新到4.8.1,看看是否修復它。 – Anthony 2012-04-16 21:38:05

回答

1

我給它一個嘗試和發現,如果你改變你的矩形(0,0,300,300),它可以作爲期望。看起來QGraphicsView有處理滾動條更新與負左上角場景矩形的問題。您應該向Qt提交錯誤報告。

+0

你測試過什麼版本的Qt? 4.8.1中我沒有看到這個問題 – jdi 2012-04-16 22:45:20

+0

這確實爲我解決了這個問題。很奇怪。正如@jdi所說,它可能是一個版本問題。如果一旦我更新,我會將其報告爲一個錯誤(並在此處)。 – Anthony 2012-04-16 23:07:11

+0

@jdi我更新到4.8.1,問題仍然存在! – Anthony 2012-04-17 02:27:16