2016-05-27 25 views
-2

我想在我的應用中包含一個QTableWidget四列,並且根據窗口大小需要頭部中的列爲stretch。目前,這些列只佔用一定的寬度,並且不會伸展到窗口。在PyQt中調整QTableWidget中頭部的高度

這裏是我的問題的最低可驗證例如:

import sys 
from PyQt5 import QtWidgets 

class MyTable(QtWidgets.QTableWidget): 
    def __init__(self, *args): 
     QtWidgets.QTableWidget.__init__(self, *args) 
     self.setheader() 
     self.resizeColumnsToContents() 
     self.resizeRowsToContents() 

    def setheader(self): 
     self.setHorizontalHeaderLabels(['Label 1', 'Label 2', 'Label 3'])  

def main(args): 
    app = QtWidgets.QApplication(args) 
    table = MyTable(5, 3) 
    table.show() 
    sys.exit(app.exec_()) 


if __name__ == "__main__": 
    main(sys.argv) 

回答

-1

如果你重新實現一個QTableWidget這是你需要給達到拉伸效果的指令:

self.horizontalHeader().setSectionResizeMode(QtWidgets.QHeaderView.Stretch) 

您可以撥打QTableWidget中的QHeaderView,並給它指定Stretch指令。下面的例子就是一個工作實現:

import sys 
from PyQt5 import QtWidgets 

class MyTable(QtWidgets.QTableWidget): 
    def __init__(self, *args): 
     QtWidgets.QTableWidget.__init__(self, *args) 
     self.setheader() 
     self.resizeColumnsToContents() 
     self.resizeRowsToContents() 

    def setheader(self): 
     self.setHorizontalHeaderLabels(['Label 1', 'Label 2', 'Label 3']) 
     self.horizontalHeader().setSectionResizeMode(QtWidgets.QHeaderView.Stretch) 
     #self.horizontalHeader().setStretchLastSection(True) # This is another possible option 


def main(args): 
    app = QtWidgets.QApplication(args) 
    table = MyTable(5, 3) 
    table.show() 
    sys.exit(app.exec_()) 


if __name__ == "__main__": 
    main(sys.argv) 

,從而導致此:

QTableWidget with stretching header - part 1

QTableWidget with stretching header - part 2

在代碼示例上面有這將使你的另一種可能具有不同風格的相同目標。它的評論,但你應該使用它(而不是第一個指令):

self.horizontalHeader().setStretchLastSection(True) 

,只有最後一列將延伸:

QTableWidget with stretching header - part 3

+0

我已經使用了setSectionResizeMode。奇蹟般有效。但是我現在需要的是根據單元格的內容來設置列寬。雖然我已經使用resizeCoulmnToContents()和resizeRowsToContents,但不起作用 – North

+0

@North這個問題剛剛被標記爲脫離主題(儘管從我的觀點來看,事實並非如此),並且似乎問題和答案都得到了某種「報復」下調。我認爲你應該爲你的新問題提出另一個問題。嘗試設置一個最小可驗證示例(當它們被認爲是低質量時,其常見問題被標記爲脫離主題)。隨意使用我的答案中的代碼。我將編輯這個問題,以包含一個最小可驗證的例子(因爲它是一個相關的問題)。如果這種情況不好,您可以再次重新編輯或恢復我的更改。 – armatita

+0

沒問題!感謝您編輯問題。 – North