2016-10-05 3 views
0

QTableWidgetに読み取り専用のテキストを入れたいので、各セルにQLabelを挿入することにしました。私はこのために使用するコードここqtablewidgetセルにテキストを設定できません

enter image description here

されています:残念ながら、私は次のような外観を取得しています

for (int row = 1; row < ui->currentSetting1TableWidget->rowCount(); row++) 
    for (int col = 1; col < ui->currentSetting1TableWidget->colorCount(); col++) { 
     QLabel *label = new QLabel(ui->currentSetting1TableWidget); 
     label->setText("mytext"); 
     ui->currentSetting1TableWidget->setCellWidget(row, col, label); 
    } 

を私は2つの問題を参照してください。

  1. 私は実行コード私は次の警告の束を持っています: QPaintDevice :: metrics:デバイスにはメトリック情報がありません

  2. mytextがコーナーヘッダーセルに表示されます。なぜこうなった?私は間違って何をやっているのですか?

+1

次の質問の回答を確認してください:http://stackoverflow.com/questions/2574115/how-to-make-a-column-in-qtablewidget-read-only 私はそれがあなたを助けるかもしれないと思います –

+0

Ifいずれのビューでも 'QLabel'を使うと思っていますが、間違っています。ビューは、 'QLabel'のようにテキストとイメージの表示をサポートしています。アイテム属性は、各データアイテムの動作を設定します。 –

答えて

1

ui->currentSetting1TableWidget->colorCount()あなたはコード補完支援のタイプミスがあります。あなたはcolumnCount()が欲しかったです。追加のラベル(colorCount()columnCount()以上である必要があります)の間違った配置を指定するため、ラベルは座標(0,0)またはそれに近いものに割り当てられます。

また、row = 1から反復していますが、行は0からインデックスされています。そのため、最初の行にラベルがありません。チェックボックスのため、最初の列をスキップして1から反復することは理にかなっています。

+1

@flashburn QFlags/QTableWidgetItemを使用して列を編集不可能に設定できるので、ラベルも必要ありません – deW1

+0

@ deW1 "QTableWidgetItemを使用する"に拡張できますか?それはどういう意味ですか? – flashburn

+2

@flashburn https://gist.github.com/deW1/2ebfadaefc7c5682b2896e6d8b540417(例: – deW1

関連する問題