Russian Qt Forum
Июнь 16, 2024, 02:22 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: textChanged в QMultiLineEdit  (Прочитано 5995 раз)
IUnknown
Гость
« : Август 01, 2005, 19:56 »

Есть текстовое поле QMultiLineEdit. Нужно сделать так что-бы при вводе в него текста аналогичный текст отображался на удаленном компе. Для одниночных символов делаю так:
bool QRemoteEdit::event(QEvent *pEvent)
{
  if (pEvent->type() == QEvent::KeyPress)
  {
    QKeyEvent *pKeyEvent = static_cast<QKeyEvent *>(pEvent);
    m_pSocket->writeBlock(pKeyEvent->text(),
                                       pKeyEvent->text().length());
   }
   return QMultiLineEdit::event(pEvent);
}

Как мне сделать так что-бы при вставке текста из буфера серверу был отправлен весь текст. Можно ли как-то сделать так что-бы при обработке textChanged как-то получать не весь текст существующий в текстовом поле, а только что введенный. Еще есть некоторые проблемы при удалении символов. Если кто сталкивался посоветуйте как это реализовать. Заранее благодарен.
Записан
jindos
Гость
« Ответ #1 : Август 02, 2005, 10:33 »

Если текст может быть вставлен в любое место QMultiLineEdit (а это видимо так), то нужно отправлять на сервер содержимое буфера обмена и QMultiLineEdit::getCursorPosition(int*line, int*col)... Наверное, этого будет достаточно...
Записан
IUnknown
Гость
« Ответ #2 : Август 02, 2005, 15:58 »

А как сделать так что-бы при изменении текста у клиента на сервере все тоже изменялось - например устанавливаем курсор в любую позицию и удаляем один символ и что-бы на сервере был удален тот же символ?
Записан
jindos
Гость
« Ответ #3 : Август 02, 2005, 16:41 »

Это все нужно обрабатывать, как я понимаю, если ты не хочешь каждый раз пересылать весь текст...
Если дело в удалении, то это тот же ввод, только наоборот: в обработке BackSpace или Del отсылаешь позицию курсора и количество удаленных символов = количество символов до удаления-количество символов после удаления (QMultilineEdit::text().length()) и направление выделения (при помощи markedText() можно получить)...

Все это обрабатываешь на клиенте... По моему не сложно...
Записан
IUnknown
Гость
« Ответ #4 : Август 02, 2005, 22:08 »

Большое спасибо за помощь, но тут у меня возник еще один простенький вопросик:
у меня есть структура
struct PACKET
{
  Q_UINT8 m_uiState;
  Q_UINT32 m_uiMsg;
  Q_UINT32 m_uiWParam;
  Q_UINT32 m_uiLParam;
};
которую я отсылаю. Вопрос у том как мне реализовать прием этой структуры в readyRead() желательно с использованием QBytesArray.
Записан
jindos
Гость
« Ответ #5 : Август 03, 2005, 09:49 »

Ну если ты ее через QDataStream пишешь в поток, то прочитать в обработчике сигнала readyRead можно при помощи оператора >>
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.045 секунд. Запросов: 20.