2014-04-10 53 views
6

Tôi đang cố tạo một QTableView có thể phóng to và thu nhỏ như trong Excel.
Một câu hỏi tương tự đã được hỏi ở đây: Zooming function on a QWidgetPhóng to/thu nhỏ QTableView

Tuy nhiên, tôi đang subclassing QTableView trong PyQt và không C để reimplementing toàn bộ phương pháp PaintEvent là một chút tiến triển. Mã nguồn cho điều đó phức tạp một chút: https://qt.gitorious.org/qt/tiittane-qt/source/bdd4a9149789f60974603e1f7621d51378f0a108:src/gui/itemviews/qtableview.cpp#L1282

Tôi đang tìm xem liệu có bất kỳ tùy chọn khả thi nào khác để có TableView có khả năng thu phóng hay không. Nỗ lực đầu tiên của tôi là bằng cách thiết lập kích thước phông chữ sau đó nhận ra mỗi chiều rộng cột và hàng sẽ phải mở rộng cũng có thể trở nên chậm chạp. Sau đó, nhận ra việc thay đổi phông chữ sẽ thay đổi bản in. Nó không có vẻ giống như một giải pháp thanh lịch. Thay đổi quy mô của họa sĩ trước khi sơn có vẻ giống như giải pháp thanh lịch hơn nhưng sẽ phải thực hiện lại và dịch khá nhiều mã để python làm như vậy. Tôi tự hỏi nếu có bất kỳ móc khác để có được điều này thực hiện.

Cảm ơn

+0

bạn đã có bất kỳ thành công với điều này cuối cùng? bạn có thể chia sẻ kỹ thuật bạn đã giải quyết không? cảm ơn! – simon

+2

Cuối cùng, nhiệm vụ đã được chuyển xuống ưu tiên đáng kể, nơi không hoạt động trên nó nữa. Tại một số điểm tôi sẽ xem lại điều này nhưng không biết khi nào. Có một số phức tạp và hành vi kỳ lạ với việc sử dụng Scene đồ họa vì vậy tôi không chắc chắn nếu nó sẽ được dễ dàng hơn so với reimplementing phương pháp sơn vào cuối – TexasRaptor

+0

Tôi hỏi về điều này một vài ngày trước, tìm kiếm của tôi skillz là xấu tôi đoán ... http: //stackoverflow.com/questions/30601123/zooming-a-view-in-pyqt. Tôi nghĩ rằng tôi có thể kết thúc chỉ đúng nghĩa là thay đổi kích thước phông chữ và sau đó thay đổi kích thước cho nội dung, mà hút, nhưng cũng oh ... – neuronet

Trả lời

1

Nếu bạn có thể sử dụng QTableWidget thay vì sau đó bạn có thể tạo một QGraphicsSceneadd it to that. Sau đó, bạn dễ dàng kiểm soát quy mô của tiện ích bên trong.

Nếu bạn muốn các tiêu đề dọc và ngang luôn hiển thị, tôi nghĩ bạn sẽ phải tắt thanh cuộn của bảng (cuối cùng sẽ thu phóng, có thể không phải là những gì bạn muốn) và có thanh cuộn của bảng chứa đồ họa scene (có lẽ panel sẽ là QAbstractScrollArea với 4 ô trong layout: một ô cho scene, một ô cho scrollbar horiz, một cho scrollbar vert, và một cho góc có thể trống), và kết nối chúng với hành vi cuộn của bảng.

+0

Điều đó nghe như một ý tưởng tuyệt vời. Tôi đã gặp sự cố khi triển khai nó vì các thanh cuộn dường như là vấn đề với việc giữ các tiêu đề Ngang và Dọc có thể cuộn được bằng Chế độ xem Đồ họa. – TexasRaptor

+0

@TexasRaptor Đã cập nhật. Nó sẽ mất một số công việc. – Schollii

0

Không có phương pháp tích hợp để thu phóng trên chế độ xem.

Cách đơn giản nhất để tách kích thước phông chữ trên màn hình, so với kích thước của phông chữ được lưu hoặc in, về cơ bản có hai phông chữ. Một được hiển thị trên màn hình, bạn có thể gọi là 'zoom', so với cái kia để được lưu/in và gọi đó là 'cỡ chữ'.

Lưu ý câu trả lời này là cắt và dán từ cùng một câu hỏi: Zooming a view in PyQt?

Các vấn đề liên quan