Üzerinde QTextEdit
bulunan bir form var, buna translationInput
adı verilir. Kullanıcı için düzenleme işlevini sağlamaya çalışıyorum.İmleci QTextEdit'in içinde taşıma
Bu QTextEdit
, HTML ile biçimlendirilmiş metin içerecektir. "bold", "Italic" gibi bir dizi düğme var ve bu, ilgili etiketleri belgeye eklemelidir. Hiçbir metin seçilmediğinde düğmesine basılırsa, sadece bir çift etiket eklemek istiyorum, örneğin <b></b>
. Bazı metinler seçildiğinde, etiketlerin soldan ve sağdan görünmesini istiyorum.
Bu iyi çalışıyor. Ancak, imlecin kapanış etiketinden önce yerleştirilmesini de istiyorum, böylece kullanıcı, imleci yeniden konumlandırmaya gerek kalmadan yeni eklenen etiketin içine yazmaya devam edebilir. Varsayılan olarak, imleç, yeni eklenen metinden sonra sağa doğru görünür (benim durumumda, kapanış etiketinden hemen sonra). İşte
Ben İtalik düğmesi için var kod:,//getting the selected text(if any), and adding tags.
QString newText = ui.translationInput->textCursor().selectedText().prepend("<i>").append("</i>");
//Inserting the new-formed text into the edit
ui.translationInput->insertPlainText(newText);
//Returning focus to the edit
ui.translationInput->setFocus();
//!!! Here I want to move the cursor 4 characters left to place it before the </i> tag.
ui.translationInput->textCursor().movePosition(QTextCursor::Left, QTextCursor::MoveAnchor, 4);
Ancak bir şey yapmaz son satırı, imleç hareket etmez halde movePosition()
döner true
, hangi tüm işlemlerin başarıyla tamamlandığı anlamına gelir.
QTextCursor::Left
yerine QTextCursor::PreviousCharacter
ile bunu yapmayı denedim ve odağı düzenlemeye döndürmeden önce ve sonra hareket ettirmeyi denedim, bu hiçbir şeyi değiştirmiyor.
Soru şu ki, imleci QTextEdit
sayfamın içinde nasıl hareket ettirebilirim?
doğrudan' moveCursor() 'kullanarak metin imleci hareket edebilir :: MoveAnchor, 4); ' – iliis
Yukarıdaki yorumun bir cevaba dönüşmesi gerektiğini düşünüyorum. –