1

QTextTableを作成しました:

QTextDocument *document=new QTextDocument(this);
QTextCursor cursor(document);
cursor.movePosition(QTextCursor::Start);

QTextTableCellFormat cellFormat;
cellFormat.setLeftPadding(7);
cellFormat.setRightPadding(7);

QBrush blackBrush(Qt::SolidPattern);
QTextTableFormat tableFormat;
tableFormat.setAlignment(Qt::AlignCenter);
tableFormat.setBorderBrush(blackBrush);
tableFormat.setBorder(0.5);
tableFormat.setCellSpacing(0);
tableFormat.setBorderStyle(QTextFrameFormat::BorderStyle_Solid);
tableFormat.setWidth(QTextLength(QTextLength::PercentageLength, 100));
QTextTable *table = cursor.insertTable(10,10,tableFormat);

QTextBlockFormat centerAlignment;
centerAlignment.setAlignment(Qt::AlignCenter);

table->mergeCells(0,0,10,5);
cursor = table->cellAt(0, 0).firstCursorPosition();
cursor.setBlockFormat(centerAlignment);
cursor.insertText("text");

セルの真ん中に縦横にテキストを書きたいのですが、横に横にテキストがありますが、縦に真ん中にありません。また、Qt::AlignVCenterとQt::AlignBottomは機能しません。この回答https://stackoverflow.com/a/10329809/1997790を試しましたが、機能しません。

4

1 に答える 1

1

次のように、QTextCharFormat :: setVerticalAlignment()を使用してみてください。

QTextTableCell   cell = table->cellAt(0, 0);
QTextCharFormat  cellFormat = cell.format();

cellFormat.setVerticalAlignment(QTextCharFormat::AlignMiddle);
cell.setFormat(cellFormat);

それでも問題が解決しない場合は、スタイルシートを使用してテーブルをカスタマイズしてみてください。

于 2013-02-05T21:05:44.413 に答える