Как создать маркированный или нумерованный список в QTextEdit с помощью Qt, нажав кнопку? Также необходимо составить список параграфов, которые выбираются нажатием одной и той же кнопки. И когда курсор находится в списке, и вы нажимаете кнопку, элемент списка становится элементом не-списка, а простым абзацем. В двух словах я хочу создать для своих текстовых редакторов 2 кнопки, которые работают так же, как (кнопка буферизации и нумерации - это MS Word).Как создать маркированный или нумерованный список с Qt?
0
A
ответ
1
Я использовал этот код:
void TextEdit::textStyle(int styleIndex)
{
QTextCursor cursor = textEdit->textCursor();
if (styleIndex != 0) {
QTextListFormat::Style style = QTextListFormat::ListDisc;
switch (styleIndex) {
default:
case 1:
style = QTextListFormat::ListDisc;
break;
case 2:
style = QTextListFormat::ListCircle;
break;
case 3:
style = QTextListFormat::ListSquare;
break;
case 4:
style = QTextListFormat::ListDecimal;
break;
case 5:
style = QTextListFormat::ListLowerAlpha;
break;
case 6:
style = QTextListFormat::ListUpperAlpha;
break;
case 7:
style = QTextListFormat::ListLowerRoman;
break;
case 8:
style = QTextListFormat::ListUpperRoman;
break;
}
cursor.beginEditBlock();
QTextBlockFormat blockFmt = cursor.blockFormat();
QTextListFormat listFmt;
if (cursor.currentList()) {
listFmt = cursor.currentList()->format();
} else {
listFmt.setIndent(blockFmt.indent() + 1);
blockFmt.setIndent(0);
cursor.setBlockFormat(blockFmt);
}
listFmt.setStyle(style);
cursor.createList(listFmt);
cursor.endEditBlock();
} else {
// ####
QTextBlockFormat bfmt;
bfmt.setObjectIndex(-1);
cursor.mergeBlockFormat(bfmt);
}
}
из этого source.
Только я изменил
} else {
// ####
QTextBlockFormat bfmt;
bfmt.setObjectIndex(-1);
cursor.mergeBlockFormat(bfmt);
}
следующему коду:
} else {
// ####
QTextBlockFormat bfmt;
bfmt.setObjectIndex(0);
cursor.mergeBlockFormat(bfmt);
setTextCursor(cursor);
}
4
QTextEdit должен поддерживать HTML форматирования текста таким образом нажатие кнопки Обработчик ниже должен вставить 2 списка в элемент управления редактирования текста:
void MainWindow::on_pushButton_clicked()
{
// will insert a bulleted list
ui->textEdit->insertHtml("<ul><li>text 1</li><li>text 2</li><li>text 3</li></ul> <br />");
// will insert a numbered list
ui->textEdit->insertHtml("<ol><li>text 1</li><li>text 2</li><li>text 3</li></ol>");
}
в качестве альтернативы вы можете манипулировать содержанием TextEdit использованием QTextDocument и QTextCursor членов. Ниже приведен пример:
void MainWindow::on_pushButton_2_clicked()
{
QTextDocument* document = ui->textEdit->document();
QTextCursor* cursor = new QTextCursor(document);
QTextListFormat listFormat;
listFormat.setStyle(QTextListFormat::ListDecimal);
cursor->insertList(listFormat);
cursor->insertText("one");
cursor->insertText("\ntwo");
cursor->insertText("\nthree");
}
также по этой ссылке: Rich Text Processing может быть полезным
надеюсь, что это помогает, считает
Второй вариант это то, что я хочу, но это-х incompleate. Трудная часть состоит в том, чтобы сделать уже написанный текст buletted/numbered. И маркированный/пронумерованный текст делает unbulleted/numberumber. На самом деле это нужно делать с помощью одной и той же контрольной кнопки или действия в меню. – Narek