2014-10-22 5 views
0

QTableWidget의 머리글 크기를 조정해야합니다. 행과 열은 쉽습니다. 여기 QTableWidget의 머리글 높이 조정

내가 시험에 사용하는 샘플 코드이다 self.grid.horizontalHeader(). setResizeMode (QHeaderView.Fixed) 및 self.grid.horizontalHeader(). resizeSection (1, 20) 작동한다.

#!/usr/bin/python 
    # -*- coding: utf-8 -*- 

    import sys 

    from PyQt4.QtCore import * 
    from PyQt4.QtGui import * 


class TagsInputDialog(QDialog): 
def __init__(self, parent = None): 
    super(TagsInputDialog, self).__init__(parent) 
    self.setWindowTitle('test') 
    masterLayout = QVBoxLayout(self) 
    self.tags_list = [] 


    t = QCheckBox() 
    # t = QLineEdit() 
    t.setMaximumWidth(30) 
    d = QHBoxLayout() 
    d.addStretch() 
    d.addWidget(t) 
    d.addStretch() 

    masterLayout.addLayout(d) 

    btn = QPushButton('test') 
    masterLayout.addWidget(btn) 
    self.connect(btn, SIGNAL("clicked()"), self.run_click) 

    self.grid = QTableWidget() 
    masterLayout.addWidget(self.grid) 
    self.fill_table() 

def run_click(self): 
    for linha in range(0, self.grid.rowCount()): 
     if self.grid.cellWidget(linha, 0) is not None: 
      self.grid.cellWidget(linha, 0).children() 
      # for n in dir(self.grid.cellWidget(linha, 0)): 
      #  print n 
      print '\n\n' 
      if self.grid.cellWidget(linha, 0).isChecked() : 
       print int(self.grid.item(linha, 0).text()) 

def fill_table(self): 
    self.grid.setSelectionBehavior(QTableWidget.SelectRows) 
    self.grid.setSelectionMode(QTableWidget.SingleSelection) 
    self.grid.setEditTriggers(QTableWidget.NoEditTriggers) 
    self.grid.verticalHeader().setDefaultSectionSize(20) 
    self.grid.setAlternatingRowColors (True) 
    self.grid.verticalHeader().setVisible(False) 
    self.grid.setColumnCount(3) 
    self.grid.setHorizontalHeaderLabels(['Data0','Data1','Data2']) 
    self.grid.setRowCount(5) 

    line = 0 
    self.grid.setRowHeight(0,20) 
    for n in ['data1','data2','data3','data4','data5']: 

     self.grid.setCellWidget(line, 0, self.checkBoxGrid('mark')) 
     self.grid.setCellWidget(line, 1, QCheckBox()) 

     item = QTableWidgetItem() 
     self.grid.setItem(line, 2,item) 
     item.setText(n) 

     line +=1 
    # this should work 
    self.grid.horizontalHeader().setResizeMode(QHeaderView.Fixed) 
    self.grid.horizontalHeader().resizeSection(1, 20); 


def checkBoxGrid(self, label = ''): 
    w = QWidget() 
    l = QHBoxLayout(w) 
    l.setContentsMargins(0,0,0,0) 
    l.addStretch() 
    c = QCheckBox(label) 
    l.addWidget(c) 
    l.addStretch() 
    return w 
def main(): 
    app = QApplication(sys.argv) 
    form = TagsInputDialog() 
    form.show() 
    app.exec_() 

if __name__ == '__main__': 
    main() 

답변

0
tableWidget->horizontalHeader()->setResizeMode(QHeaderView::Fixed); 
tableWidget->horizontalHeader()->resizeSection(x, y); 
tableWidget->horizontalHeader()->resizeSection(x, y); 
tableWidget->horizontalHeader()->resizeSection(x, y); 

여기서 X = 0 내지 컬럼 인덱스; 및 y = 크기;

+0

작동하지 않습니다. 행 높이가 아닌 열 너비의 크기를 조정합니다. – Starglider