Как взаимодействовать с пользовательским QT -рендерированным объектом в qtexteditC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Как взаимодействовать с пользовательским QT -рендерированным объектом в qtextedit

Сообщение Anonymous »

Я пытаюсь создать приложение Notes на основе Markdown, используя библиотеку QT в C ++. Я начал использовать класс QTextEdit и добавил новую графику (флажок), который я хочу отображать в качестве CustomObjecterderer. Я приводил объект таким образом в свое корпус qtextedit: < /p>

Код: Выделить всё

// Render checkbox
if (blockText == "- [ ]") {
cursor.beginEditBlock();
cursor.removeSelectedText();

QTextCharFormat fmt;
fmt.setObjectType(QTextFormat::UserObject + 1);
fmt.setProperty(1000, "checkbox");
fmt.setProperty(1001, true);
fmt.setFontPointSize(FONT_SIZE);
cursor.insertText(QString(QChar::ObjectReplacementCharacter), fmt);
cursor.endEditBlock();

return;
}
Я не могу выяснить, почему с моей функцией mousespressevent она только снимает/проверяет/проверяет поле (пользовательский объект), когда я на левой стороне флажки, но не справа.
void MarkdownEditor::mousePressEvent(QMouseEvent *event)
{
QTextCursor cursor = cursorForPosition(event->pos());
cursor.movePosition(QTextCursor::Right, QTextCursor::KeepAnchor, 1); // Select one character

QTextCharFormat fmt = cursor.charFormat();

if (fmt.objectType() == QTextFormat::UserObject + 1 &&
fmt.property(1000).toString() == "checkbox") {

//Toggle the checkbox state
bool checked = fmt.property(1001).toBool();
fmt.setProperty(1001, !checked);

cursor.setCharFormat(fmt); //
Любые указатели о том, как я могу понять основную графическую архитектуру приложений QT? Я сильно полагаюсь на LLMS для этого, но любые указатели понять, как это работает на более глубоком уровне, чтобы я мог устранения неполадок, было бы здорово.

Подробнее здесь: https://stackoverflow.com/questions/795 ... -qtextedit
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»