134QString QTextList::itemText(
const QTextBlock &blockIt)
const
136 Q_D(
const QTextList);
137 int item = d->blocks.indexOf(blockIt) + 1;
141 QTextBlock block = d->blocks.at(item-1);
142 QTextBlockFormat blockFormat = block.blockFormat();
146 const int style = format().style();
147 QString numberPrefix;
148 QString numberSuffix = u"."_s;
151 const int itemNumber = item + format().start() - 1;
153 if (format().hasProperty(QTextFormat::ListNumberPrefix))
154 numberPrefix = format().numberPrefix();
155 if (format().hasProperty(QTextFormat::ListNumberSuffix))
156 numberSuffix = format().numberSuffix();
159 case QTextListFormat::ListDecimal:
160 result = QString::number(itemNumber);
163 case QTextListFormat::ListLowerAlpha:
164 case QTextListFormat::ListUpperAlpha:
167 if (itemNumber < 1) {
168 result = QString::number(itemNumber);
172 const char baseChar = style == QTextListFormat::ListUpperAlpha ?
'A' :
'a';
177 result.prepend(QChar::fromUcs2(baseChar + (c % 26)));
182 case QTextListFormat::ListLowerRoman:
183 case QTextListFormat::ListUpperRoman:
186 if (itemNumber < 1) {
187 result = QString::number(itemNumber);
188 }
else if (itemNumber < 5000) {
189 QString romanNumeral;
192 QLatin1StringView romanSymbols;
193 if (style == QTextListFormat::ListLowerRoman)
194 romanSymbols =
"iiivixxxlxcccdcmmmm"_L1;
196 romanSymbols =
"IIIVIXXXLXCCCDCMMMM"_L1;
198 int c[] = { 1, 4, 5, 9, 10, 40, 50, 90, 100, 400, 500, 900, 1000 };
200 for (
int i = 12; i >= 0; n %= c[i], i--) {
203 int startDigit = i + (i+3)/4;
221 romanNumeral.append(romanSymbols.sliced(startDigit, numDigits));
224 result = std::move(romanNumeral);
234 if (blockIt.textDirection() == Qt::RightToLeft)
235 return numberSuffix + result + numberPrefix;
237 return numberPrefix + result + numberSuffix;
263void QTextList::remove(
const QTextBlock &block)
265 QTextBlockFormat fmt = block.blockFormat();
266 fmt.setIndent(fmt.indent() + format().indent());
267 fmt.setObjectIndex(-1);
268 const_cast<QTextDocumentPrivate *>(QTextDocumentPrivate::get(block))->setBlockFormat(block, block, fmt, QTextDocumentPrivate::SetFormat);
276void QTextList::add(
const QTextBlock &block)
278 QTextBlockFormat fmt = block.blockFormat();
279 fmt.setObjectIndex(objectIndex());
280 const_cast<QTextDocumentPrivate *>(QTextDocumentPrivate::get(block))->setBlockFormat(block, block, fmt, QTextDocumentPrivate::SetFormat);
QTextListPrivate(QTextDocument *doc)