2012-10-29 44 views
8

一個QGraphicsView驚人的特點是它本身與它的場景的內容(插在現場實際每的QGraphicsItem)擴展能力。在縮放QGraphicsView時調整QPen厚度?

view->scale(4,4); 

像素圖作爲我想要做的縮放:我已經正確插入秤,也就是說,如果我提供了4×4的這個比例因子的QPixmap

但是這不是我習慣深加工的rects的情況;他們的目標是圍繞我在場景中繪製的像素圖,而不考慮比例因子,它們保持厚度爲1而不是 - 我猜 - 4.

我一直在搜索關於所有這些東西的文檔,試圖弄清楚「化妝筆」的確切用途,但我仍然無法使矩形變得更厚。

最新公告:我有一個自定義QGraphicsItem以及用於繪製的長方型的QPEN在

virtual void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget); 

方法實例化上的動態。

什麼關係呢?

在此先感謝和道歉我缺乏這兩種Qt框架和圖形算法領域的經驗/知識......

+0

顯示使用的代碼。 – cmannett85

+0

這裏我們去:'QPen borderPen(Qt :: black); borderPen.setCosmetic(假); painter-> setPen(borderPen);' –

回答

12

它並不真的不管你在哪裏實例化QPEN。

QPEN具有0默認寬度這是一個特殊值,意味着化妝品的真實,寬度實際上是1。所以,如果你不希望此筆,化妝品,你必須將其設置爲所需的寬度。您可能還需要將化妝品設置爲假。

下面是一個簡單的例子:在您創建`QPen`

#include <QtGui> 

int main(int argc, char *argv[]) 
{ 
    QApplication a(argc, argv); 

    QGraphicsView view; 
    QGraphicsScene scene; 

    QGraphicsRectItem *item1 = scene.addRect(20, 20, 20, 20); 
    QGraphicsRectItem *item2 = scene.addRect(50, 20, 20, 20); 

    QPen pen1, pen2; 
    pen1.setWidth(5); 
    pen2.setWidth(5); 
    pen1.setCosmetic(true); 
    pen2.setCosmetic(false); 

    item1->setPen(pen1); 
    item2->setPen(pen2); 

    view.setScene(&scene); 
    view.scale(4, 4); // both rects are the same size, but one a has wider pen 
    view.show(); 

    return a.exec(); 
} 
+0

示例工作正常,但是當我評論的setWidth()線,兩個矩形保持在那裏的邊緣具有相同的厚度。無論如何,謝謝 –

+1

這是因爲默認寬度爲0,這是美容。如果您希望厚度隨着比例增加,您必須將寬度更改爲1或更大。 – Anthony

+0

偉大的工作正常!感謝第三次安東尼:) –