2014-04-10 227 views
6

我想創建一個QTableView,可以像在Excel中一樣放大和縮小。
類似的問題在這裏問:Zooming function on a QWidgetQTableView放大/縮小

不過,我繼承了QTableView中的PyQt的和不是C所以重新實現整個的paintEvent方法有點演變。它的源代碼有點複雜:https://qt.gitorious.org/qt/tiittane-qt/source/bdd4a9149789f60974603e1f7621d51378f0a108:src/gui/itemviews/qtableview.cpp#L1282

我期待着看看是否有其他可行的選項有一個可縮放TableView。我的第一次嘗試是設置字體大小,然後實現每一列和行的寬度將不得不縮放以及可能變慢。然後意識到改變字體會改變打印。它似乎不是一個優雅的解決方案。在繪畫之前改變畫家的規模似乎是更優雅的解決方案,但必須重新實現並將相當多的代碼轉換爲python才能實現。我想知道是否有其他的鉤子來完成這件事。

感謝

+0

你到底有任何這方面的成功?你能分享你解決的技巧嗎?謝謝! – simon

+2

最後,這項任務顯着優先下移,而不再工作。在某些時候,我會重新審視這一點,但不知道何時。使用圖形場景有一些複雜性和奇怪的行爲,所以我不確定是否會比最後重新實現繪畫方法更容易 – TexasRaptor

+0

前幾天我問到了這個問題,我的搜索技巧很糟糕猜... HTTP://stackoverflow.com/questions/30601123/zooming-a-view-in-pyqt。我想我最終可能只是改變字體大小,然後調整內容,這很糟糕,但噢... – neuronet

回答

1

如果你可以使用QTableWidget代替,那麼你可以創建一個QGraphicsSceneadd it to that。然後,您可以輕鬆控制其中的小部件的比例。

如果你想垂直和水平的標題總是可見的我認爲你將不得不關閉表的滾動條(這將最終放大,可能不是你想要的),並讓面板的滾動條部分包含圖形場景(可能面板將是一個QAbstractScrollArea,佈局中有4個單元格:一個單元格用於場景,一個用於水平滾動條,一個用於vert scrollbar,另一個用於轉角可能爲空),並將它們連接到表格的滾動行爲。

+0

這聽起來像一個好主意。我一直在執行它時遇到問題,因爲滾動條似乎是一個問題,保持水平和垂直標題可視化滾動與圖形視圖。 – TexasRaptor

+0

@TexasRaptor已更新。這將需要一些工作。 – Schollii

0

沒有內置的方法來縮放視圖。

分離屏幕上字體大小與保存或打印字體大小的最簡單方法是基本上有兩種字體。一個要顯示在屏幕上,您可以調用「縮放」,而另一個要保存/打印並調用「字體大小」。

注意這個答案被切斷,從同樣的問題粘貼: Zooming a view in PyQt?