Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: gil9red от Август 14, 2017, 14:04



Название: [РЕШЕНО] Одновременное выделение в двух QPlainTextEdit/QTextEdit
Отправлено: gil9red от Август 14, 2017, 14:04
Есть два редактора, нужно чтобы при выделении текста в одном, выделялся так же в другом
Через курсоры в принципе сделал, но выглядит неудобно -- пока выделяешь в одном редакторе, фокус в нем остается, поэтому выделение в другом почти не видно (см скриншот), а нужно чтобы одинаково хорошо было видно в обоих

// Пример выделения первых 4 символов
Код
C++ (Qt)
cursor_output = self.text_edit_output.textCursor()
cursor_output.setPosition(0)
cursor_output.movePosition(QTextCursor.Right, QTextCursor.KeepAnchor, 4)
 
self.text_edit_output.setTextCursor(cursor_output)
self.text_edit_output.setFocus()
 

Я делал что-то подобное (https://github.com/gil9red/NotesManager/blob/90864c80674bdd88540eed9147b9c58d34fc355b/FindAndReplace/find_highlighter.cpp), но с QSyntaxHighlighter, но это немного другое, и там свои заморочки, с которыми не хотелось возиться

Подскажите, как легко и непринужденно сделать выделение в обоих редакторах?


Название: Re: Одновременное выделение в двух QPlainTextEdit/QTextEdit
Отправлено: Old от Август 14, 2017, 14:12
Так может проще делать через курсор, но поменять стиль выделения для неактивного QTextEdit?


Название: Re: Одновременное выделение в двух QPlainTextEdit/QTextEdit
Отправлено: gil9red от Август 14, 2017, 14:29
Так может проще делать через курсор, но поменять стиль выделения для неактивного QTextEdit?

Подходит :)

Нашел нужный пример (https://stackoverflow.com/a/9881400/5909792):
Код
C++ (Qt)
QPalette p = myInactiveWidget->palette();
p.setColor(QPalette::Inactive, QPalette::Highlight, p.color(QPalette::Active, QPalette::Highlight));
p.setColor(QPalette::Inactive, QPalette::HighlightedText, p.color(QPalette::Active, QPalette::HighlightedText));
myInactiveWidget->setPalette(p);