2016-06-15 14 views
0

私はlineEditからの入力を受け取り、それが新しい行として追加される単純なウィジェットを構築しています(既にエントリが存在しないと仮定して)QTableWidgetに追加します。私が直面している問題は、行が表示されても、テキストがテーブルウィジェットに表示されないことです。 on_flagInput_returnPressedでQTableWidgetがテキストを表示しない

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'は決してありません 'として、誰もが同じ問題に遭遇した場合、ここで

は作業バージョンです使用または削除されます。たぶんあなたは '新しいQTableWidgetItem(commandInput)'の代わりにそれを使用するつもりでしたか?また、なぜあなたはあなたのflagTableは1列だけを持っている間、あなたは1列にそれを設定していますか?これは0ではないはずですか? –

+0

@JeffreyvandeGlindこれは以前の試みから残されたものです。再フォーマットされ、同じバグが残る –

+0

'rowCount() - 1'ではなく、' rowCount() 'にもアイテムを設定しています。新しい一意の入力を追加する際に前の入力が表示されますか? –

答えて

0

これがわかりました!

初期化されていない行に項目を設定していたため、初期化されたrowCounterの値は0です。

コンストラクタ:

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++; 
} 
関連する問題