2013-03-08 4 views
1

QMainWindow가 있습니다.QMainWindow의 크기가 조정될 때 QTableView가 확장/축소되지 않습니다.

QMainWindow 내부에는 중앙 위젯이 있습니다.

중앙 위젯의 경우 QVBoxLayout이 있습니다.

이 QVBoxLayout에 3 개의 위젯을 추가했습니다. 하나는 QGridLayout을 가진 레이블이있는 위젯입니다. 다른 하나는 수평선입니다.

세 번째는 QTableView입니다. 문제는 QMainWwindow를 확장 할 때 어떤 크기 조절 정책을 설정했는지 (또는 설정하지 않아도), TableView가 확장되지 않고 확장 된 QMainWindow의 나머지 영역에 빈 영역이 남지 않는다는 것입니다.

아무도 내가 창 크기를 조정할 때 테이블을 확장/크기 조정할 수있는 방법을 말해 줄 수 있습니까?

다음은 관련 코드입니다.

`

statInfoWidget = new Static_Info(TagN); 
QWidget *widget = new QWidget; 
setCentralWidget(widget); 
QFrame *hor_line = new QFrame(); 
hor_line->setFrameShape(QFrame::HLine); 
QVBoxLayout *layout = new QVBoxLayout(); 
layout->setMargin(2); 

layout->addWidget(statInfoWidget); 
layout->addWidget(hor_line); 
Table = new QTableView(this); 
temp = Table; 
t = new TableLayout(statInfoWidget); 
Table->setModel(t); 
Table->verticalHeader()->hide(); 
Table->horizontalHeader()->hide(); 
Table->setShowGrid(false); 
Table->setContextMenuPolicy(Qt::CustomContextMenu); 
//Table->setColumnWidth(2,290); 
// Table->setColumnWidth(0,25); 
// if(num_version == 1) 
//  Table->setColumnWidth(1,0); 
// else 
// Table->setColumnWidth(1,43); 
// Table->setColumnWidth(3,210); 
// Table->setColumnWidth(4,170); 
// Table->setColumnWidth(5,50); 
statInfoWidget->setStyleSheet("background: rgb(153,185,193);color:rgb(0,0,0); font-family:Tahoma;font-size:19px; border: 0px outset rgb(255,255,255);gridline-color: #669933;" 
         "selection-background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,stop: 0 #486909, stop: 1 white);"); 
Table->setStyleSheet("background: rgb(153,185,193);color:rgb(0,0,0); font-family:Tahoma;font-size:15px; font-weight:bold; border: 0px outset rgb(255,255,255);gridline-color: #669933;" 
         "selection-background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,stop: 0 transparent, stop: 1 white);"); 
// layout->addWidget(button1); 
QSizePolicy policy = Table->sizePolicy(); 
policy.setVerticalStretch(1); 
policy.setHorizontalStretch(1); 
Table->setSizePolicy(policy); 
layout->addWidget(Table); 
widget->setLayout(layout); 

`

+0

어떤 아이디어라도주세요? – user1173240

답변

2

당신은 고려할 수 있습니다 다음

당신은 또한 당신의 테이블에 단 하나의 열 크기를 조정 할 수 있습니다
Table->horizontalHeader()->setResizeMode(QHeaderView::Stretch); 

, 이것은 통과하여 수행 할 수 있습니다 열 색인 :

Table->horizontalHeader()->setResizeMode(columnIndex, QHeaderView::Stretch); 
+0

첫 번째 방법은 실제로 테이블을 늘리지 만 다른 열에 표시해야하는 고정 된 열 너비를 덮어 씁니다. 이를 적용한 후에는 모든 열이 같은 크기로 전체 창 크기와 똑같이 나뉘며 모든 것이 모양이 엉망이됩니다. 나는 열을 고정 된 최소 크기로 유지해야만 물건을 표시 할 수 있습니다. – user1173240

+0

어떤 해결책이라도? – user1173240