вертикальной на горизонтальную?
Если ты про полосу прокрутки, то поиграйся с setLineWrapMode
Я про курсор: когда мы печатаем в ворде, то у нас он справа от символа, а как я могу сделать, чтобы он был под символом? (Про ворд это просто пример)
Без шансов?(
paintEvent?
Такое даже не загуглю. Все сводится к курсору, а курсор это про мышь
Как именно?
https://code.woboq.org/qt5/qtbase/src/widgets/widgets/qtextedit.cpp.html#1596 кажется идея так себе, не вижу там того, что вы ищете
Примерно вот так, но там какой-то баг, когда каретку меняешь на другое место, за собой следы оставляет. В конструкторе это прописано setCursorWidth(0);, а паинт такой void TextTestEdit::paintEvent(QPaintEvent *event) { QTextEdit::paintEvent(event); if (hasFocus()) { QFontMetrics fm(currentFont()); int w = fm.horizontalAdvance("T"); // test len 1 char width QRect qRect = cursorRect(textCursor()); qDebug() << qRect; QPainter qPainter(viewport()); QRect line(qRect.left(), qRect.bottom(), w, 1); qPainter.fillRect(line, QColor(0, 0, 0)); //qPainter.fillRect(qRect.left(), qRect.bottom(), w, 1, Qt::black); qDebug() << line; qDebug() << ""; } }
Проблема решена. Там короче заоптимизирован QTextEdit и он обновляет только те части, где находится каретка, а все остальное игнорирует. Это будет немного трудозатратно, но код теперь работает как надо. Немного подшаманить и можно сделать мигающий курсор. Вот костыль который исправит остатки следов в необновляемых областях. Прописал в конструкторе connect(this, &TextTestEdit::cursorPositionChanged, this, [this]{ viewport()->update(); });
Обсуждают сегодня