Tôi đang tạo trình chỉnh sửa mã tùy chỉnh với QPlainTextEdit
và QSyntaxHighlighter
và tôi đã gặp sự cố. Tôi muốn giữ nguyên cú pháp tô sáng ngay cả trong vùng chọn. Tuy nhiên, màu sắc của vùng chọn (màu môi trường) ghi đè màu của văn bản được đánh dấu bởi QSyntaxHighlighter
và thẻ html. Các thuộc tính khác như họ phông chữ được giữ nguyên.QSyntaxHighlighter - lựa chọn văn bản ghi đè kiểu
Ví dụ:
Không lựa chọn: Selection:
(Tôi muốn Hello
là màu xanh lá cây và World!
để có màu đen)
Tôi cũng đã cố gắng để thiết lập các style sheet để:
QPlainTextEdit {
selection-color: rgba(0, 0, 0, 0);
selection-background-color: lightblue;
}
Kết quả:
Màu nền phủ lên văn bản và tốt, màu văn bản với alpha = 0
không hiển thị. Tôi đã làm điều đó chỉ để loại trừ ý tưởng rằng màu cú pháp vẫn còn dưới selection-color
. Trên thực tế, nó được phủ lên bởi selection-background-color
. Chỉnh sửa: Không, nếu tôi cũng đặt selection-background-color
thành rgba(0, 0, 0, 0)
, không có lựa chọn nào và không có văn bản trong lựa chọn đó. Tất cả những gì tôi thấy là nền tảng.
Cách tiếp cận của đoạn sau đây mà làm cho toàn bộ dây chuyền con trỏ của nhấn mạnh dường như con đường để đi, nhưng tôi về cơ bản sẽ kết thúc reimplementing tất cả các cơ chế lựa chọn ...
QList<QTextEdit::ExtraSelection> extraSelections;
QTextCursor cursor = textCursor();
QTextEdit::ExtraSelection selection;
selection.format.setBackground(lineHighlightColor_);
selection.format.setProperty(QTextFormat::FullWidthSelection, true);
selection.cursor = cursor;
selection.cursor.clearSelection();
extraSelections.append(selection);
setExtraSelections(extraSelections);
Có bất kỳ đơn giản giải pháp này?
đã bao giờ bạn tìm một giải pháp đơn giản hơn? –
@NicolasHolthaus Tôi đã từ chức. Nếu tôi đã tìm thấy một cách tiếp cận đơn giản hơn (tôi không biết nếu 'QTextEdit :: ExtraSelection' là một giải pháp khả thi), tôi đã chia sẻ nó. – LogicStuff
đây là một giới hạn thực sự gây phiền nhiễu của trình đánh dấu cú pháp. –