6

私は試した:

    QTableWidget *j = new QTableWidget (10000, 5, centralWidget);
    j->setColumnWidth (0, 500);
    j->setColumnWidth (1, 30);
    j->setColumnWidth (2, 30);
    j->setColumnWidth (3, 320);
    j->setColumnWidth (4, 310);

    j->setWordWrap (true);

resizeColumnsToContentsとも試しresizeRowsToContentsましたが、失敗しました。

テキストが設定幅より長い場合は、文章を分解してほしい。
現在、文の長い部分は表示されません。

4

3 に答える 3

8

setWordWrap列のサイズを変更せずに、テキストの動作を定義します。列幅を固定しておく必要がある場合は、項目をセルに挿入したresizeRowsToContents に呼び出します (を介してテーブルにテキストを追加していると仮定しますQTableWidgetItem)。

アイテムに含まれる単語のいずれかが列のサイズよりも広い場合、テキストはその時点から省略されることに注意してください (デフォルトでは、省略記号が表示されます: ... )。このような動作を変更したい場合は、アイテムの描画機能を再実装するか、列を伸ばす必要があります。

于 2012-03-03T15:43:12.213 に答える
6

これにより、列のサイズが変更されるたびにワードラップが自動的に調整されます。

connect(
    tableWidget->horizontalHeader(),
    SIGNAL(sectionResized(int, int, int)),
    tableWidget,
    SLOT(resizeRowsToContents()));
于 2013-07-09T12:56:33.020 に答える
0

質問のコメントで述べたように、行サイズを明示的に値に設定するとうまくいくようです:

 tableWidget->resizeRowsToContents();
 tableWidget->verticalHeader()->setDefaultSectionSize(50);

私のコードでは、setWordWrapセルの内容をワードラップするために明示的に呼び出す必要はありませんでした。

于 2014-11-29T16:20:34.383 に答える