crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )


  Ответ в перемещение курсора в QTextEdit
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
lanz Дата 18.6.2014, 19:47
  А вместо QTextEdit использовать таблицу, например QTableView.
OKTA Дата 18.6.2014, 9:19
  Может не стоит мучиться с файлами? Чем sqlite не угадила?
Marsel - Adaeze Дата 17.6.2014, 19:16
  Добрый вечер, изучаю работу с файлами в QT Creator, стоит такая задача: в файл записываются: марка мобильного телефона, вес в граммах и цена. пользователь задаёт минимальную и максимальную цены и на экран должны вывестись телефоны, цены которых входят в заданный промежуток, как можно осуществить данную сортировку с использованием QTextCursor, вот, допустим, вывод у меня осуществляется в таком формате: sony3s22rw|500|10000|, я выгружаю всю информацию из файла в текст эдит, заставляю элемент типа QTextCursor искать в строке каждый второй символ "|", а как вот дальше заставить его переместиться наследующую позицию и выделить слово? И сразу вопрос, можно ли выделенную часть переводить в число и проверять на соответствие условию, в Delphi вроде бы так можно было делать, не приходилось особо это затрагивать, когда работала там, а вот тут что-то пришлось.
void* Дата 7.6.2008, 12:48
  Red Devil, большое спасибо, то что нужно
Red Devil Дата 6.6.2008, 22:59
  Для того чтобы получить текущию строку :
QTextBlock Block = textCursor().block();
const QString sText = Block.text();


А для добавления новой строки в место после курсора, лучше использовать QTextCursor::insertBlock().
void* Дата 6.6.2008, 19:12
  немного усовершенствовал:
void TextEdit::keyPressEvent(QKeyEvent *keyEvent) {
     if(keyEvent->key() == Qt::Key_Return) {
                        QString text = toPlainText();
                        if((text.right(1) == "{") || (text.right(1) == ":")) {
                                          n = textCursor().columnNumber();
                                          insertPlainText("\n");
                                          for(int i=0; i < n; ++i) insertPlainText(" ");
                                          return;
                                          }
                        if(text.right(1) == "}") {
                                         if(n) {
                                               n=0;
                                               QTextEdit::keyPressEvent(keyEvent);
                                               }
                                               }
                        if(n) {
                              insertPlainText("\n");
                              for(int i=0; i < n; ++i) insertPlainText(" ");
                              return;
                              }
                                          }
     QTextEdit::keyPressEvent(keyEvent);
}

(n - целочисленная переменная, хранящаяся в классе и инициализирущаяся в конструкторе для начала нулем)
void* Дата 6.6.2008, 17:43
  уррряя! получилось :rolleyes: большое спасибо!
выкладываю код, может кому еще понадобится:
void TextEdit::keyPressEvent(QKeyEvent *keyEvent) {
     if(keyEvent->key() == Qt::Key_Return) {
                        QString text = toPlainText();
                        if((text.right(1) == "{") || (text.right(1) == ":")) {
                                          int n = textCursor().columnNumber();
                                          insertPlainText("\n");
                                          for(int i=0; i < n; ++i) insertPlainText(" ");
                                          return;
                                          }
                                          }
     QTextEdit::keyPressEvent(keyEvent);
}
void* Дата 6.6.2008, 14:27
  ViGOur, и все-таки можно ли как-то получить только последнюю строку или, что еще лучше, символ, а не весь текст, как здесь у тебя:
QString szText = toPlainText();

?
потому что, я думаю, этот способ будет очень неэффективен для больших объемов текста, расположенных в TextEdit'e

параллельно роюсь в ассистенте...
З.Ы. насчет второго пункта я был неправ, неправильно понял работу этой функции
void* Дата 5.6.2008, 14:03
  ладно, чуть позже еще пошаманю над этим
ViGOur Дата 5.6.2008, 13:53
  Критика конечно же обоснована, но я это набросал как пример для наглядности того, как сделать то, что ты хочешь. Потому оптимизацией занимайся как-нибудь сам... ;)

Получить позицию можно так:
int n1 = pTextEdit->textCursor().blockNumber();
int n2 = pTextEdit->textCursor().columnNumber();


Цитата(void* @ 5.6.2008, 13:50) *
но я чего-то путаюсь с передвиганием курсора
Что именно не понятно?
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 28.4.2024, 2:05