我正在開發一個具有QTableWidget,可能會用於顯示大量的行的PyQt應用程序。我希望每個列的寬度都由整個列的最大元素寬度來定義,而不僅僅是在將單元格數據編程添加到表部件時顯示的最大元素。重新實現sizeHintForColumn()resizeColumnsToContents()通過QTableView中的所有單元格(不僅顯示)
的Qt docs在resizeColumnToContents()方法描述狀態
只有可見的列將被調整。 重新實現sizeHintForColumn()到 調整隱藏的列以及。
問題是,我該如何正確地做到這一點?不幸的是,我在PyQt中沒有真正的經驗,而且我無法找到任何這種方法的來源來給我任何線索,我該如何做到這一點。
是否可以根據任何給定時刻顯示的當前內容進行大小調整,即在表格窗口小部件接收到任何paintEvents後調整大小?
謝謝。我想,我將不得不創建我的QTableWidget作爲我的類的實例(MyTable在這裏)(不幸的是,我不能自己檢查它ATM)?有什麼辦法讓這個類與Qt Designer兼容,還是應該完成表單的設計,編譯最終版本的.ui,然後手動編輯ui的.py文件? QTableWidget實例化在一個自動生成的文件中,不需要手動編輯的事實讓我感到最困惑。 – havelock
您在程序中實際使用的類可能會繼承QTableWidget和您在Qt Designer中設計的類。如果是這樣的話,你可以在程序的類中粘貼'sizeHintForColumn'方法。 –
好的。對不起,我在想你的Qt Designer類只是TableWidget而不是MainWindow。在這種情況下,有兩種方法可以做到這一點。一個是編輯Qt設計器生成的代碼,用我的答案中給出的調用新類的行替換QTableWidget的構建行。另一個是將您的自定義類添加到Qt Designer。我從來沒有這樣做過,但我認爲這很簡單。請參閱http://www.riverbankcomputing.co.uk/static/Docs/PyQt4/html/designer.html#writing-qt-designer-plugins。不過,編輯代碼可能更容易。 –