2016-06-15 3 views
0

lineEdit에서 입력을 받아서 새로운 행으로 추가하는 간단한 위젯을 작성하고 있습니다 (항목이 이미 존재하지 않는다고 가정 할 때). QTableWidget에 추가하십시오. 내가 겪어 본 문제는 텍스트가 테이블 위젯에 표시되지 않지만 행은 비어 있지만 비어 있습니다.QTableWidget이 텍스트를 표시하지 않습니다.

관련 코드 :

생성자에서 : on_flagInput_returnPressed에서

rowCounter = 0; 
ui->flagTable->setColumnCount(1); 
ui->flagTable->horizontalHeader()->hide(); 
ui->flagTable->verticalHeader()->hide(); 
ui->flagTable->setColumnWidth(0,148); 
QString commandInput = ui->flagInput->text(); 

는()

QString commandInput = ui->flagInput->text(); 
if (ui->flagTable->findItems(commandInput, Qt::MatchFixedString).isEmpty()) 
{ 
    rowCounter++; 
    ui->flagTable->setRowCount(rowCounter); 
    ui->flagTable->setItem(rowCounter, 0, new QTableWidgetItem(commandInput)); 

}

^즉 코드이다.

+0

당신은 메모리 누수가 commandItem'은 결코 '로, 사람이 같은 문제가 발생하면 다음

는 작업 버전입니다 사용 또는 삭제됨. 아마 당신은'new QTableWidgetItem (commandInput)'대신에 그것을 사용하고자하셨습니까? 또한, 당신은 왜 당신의 flagTable은 단지 하나의 열을 가지고있는 동안, 당신은 1 열에서 그것을 설정하고 있습니까? 0이 아니어야합니까? –

+0

@JeffreyvandeGlind 이전 시도에서 남겨 두었던 것입니다. 다시 서식 화되고 동일한 버그가 계속 발생합니다 –

+0

'rowCount() - 1'이 아니라'rowCount()'에 항목을 설정하고 있습니다. 새 고유 입력을 추가 할 때 이전 입력을 보시겠습니까? –

답변

0

알아 냈어!

값이 0 인 초기화 된 rowCounter이므로 항목을 아직 초기화되지 않은 행으로 설정했습니다.

생성자 :

rowCounter = 1; 
ui->flagTable->setColumnCount(1); 
ui->flagTable->horizontalHeader()->hide(); 
ui->flagTable->verticalHeader()->hide(); 
ui->flagTable->setColumnWidth(0,148); 

on_flagInput_returnPressed() :

QString commandInput = ui->flagInput->text(); 
if (ui->flagTable->findItems(commandInput, Qt::MatchFixedString).isEmpty()) 
{ 
    QTableWidgetItem *commandItem = new QTableWidgetItem(commandInput, 1); 
    ui->flagTable->setRowCount(rowCounter); 
    ui->flagTable->setItem(rowCounter-1, 0, commandItem); 
    rowCounter++; 
} 
관련 문제