2010-10-15 52 views
9

Ok, vì vậy tôi đang sử dụng Qt và C++ làm môi trường của mình.Cảnh đồ họa Qt kéo dài để phù hợp với

Tôi vẽ ra một QGraphicsView trong giao diện người dùng của mình.

Sau đó, tôi tạo một cảnh và thêm đường vào cảnh đó. Tôi chạy qua một loạt 5000 điểm và vẽ các đường nối mỗi điểm.

QGraphicsScene *scene = new QGraphicsScene(); 
QPen pen2 = QPen(Qt::blue, 8.0); 
int j=1; 
for (int i=1; i<5000; i++) 
{ 
    scene->addLine(xArray[i],yArray[i],xArray[j],yArray[j], pen2); 
    j++; 
} 

Vấn đề là các số tôi đang nắm bắt rất nhỏ, ví dụ: 2.000e-12. Các con số sẽ luôn thay đổi dựa trên ứng dụng. Làm thế nào tôi có thể điều chỉnh cảnh của tôi để kéo dài để điền vào QGraphicsView của tôi. Bây giờ, tất cả những gì tôi thấy là một dấu chấm ở giữa tầm nhìn của tôi. Tôi có ý nghĩa không?

Trả lời

1

tôi không bao giờ sử dụng nó bản thân mình, nhưng trong Qt doc có một

void QGraphicsView::scale (qreal sx, qreal sy) 

cho phép bạn mở rộng tầm nhìn của bạn trong x và trục y. Nếu nó không đủ, bạn có thể (nếu có thể trong dự án của bạn) thu phóng thủ công khi các giá trị quá nhỏ hoặc quá lớn, khi bạn vẽ các đường và áp dụng cùng hệ số này cho mọi thứ khác. Nhưng nếu có thể, tôi sẽ đi với phương pháp quy mô bao gồm trong Qt.

Hy vọng điều này sẽ hữu ích.

+0

điều này không có tác dụng đối với tôi, và tôi không thể tìm thấy bất kỳ tài liệu trực tuyến nào tốt? ui-> graphicsView-> setSceneRect (x1, y1, x2, y2) ??? – JohnStudio

10

Sử dụng sceneRect của QGraphicsScene của bạn trong QGraphicsView::fitInView() sẽ làm thu phóng cho vừa với bạn.

+0

phải có điều gì sai với cú pháp của tôi ?? ui-> graphicsView-> fitInView (scene-> sceneRect()); tôi không biết?? – JohnStudio

+0

Tôi không chắc chắn ý của bạn là gì. Bạn có nhận được lỗi biên dịch/liên kết hay không thu phóng khi bạn muốn? Nhiều mã và lỗi/mô tả sẽ hữu ích hơn. –

0

kiểm tra xem mã này có hữu ích hay không. Nó chỉ phù hợp với hình ảnh trên GraphicsView

m_Scene.setSceneRect(m_QImage.rect()); 

m_Scene.addPixmap(QPixmap::fromImage(m_QImage,0)); 

m_GraphicsView.setScene(&m_Scene); 

m_GraphicsView.fitInView(m_QImage.rect()); 
Các vấn đề liên quan