crossplatform.ru

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

void*
  опции профиля:
сообщение 5.6.2008, 11:13
Сообщение #1


Программист-самоучка
***

Группа: Участник
Сообщений: 429
Регистрация: 4.6.2008
Пользователь №: 193

Спасибо сказали: 28 раз(а)




Репутация:   3  


добрый день! есть вопрос:
как сделать чтобы если в QTextEdit'е ввели символ { или : и нажали Enter, то курсор перемещается не в начало следующей строки, а на следующую строку и под этим символом?
заранее большое спасибо!

Сообщение отредактировал void* - 5.6.2008, 11:14
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
ViGOur
  опции профиля:
сообщение 5.6.2008, 12:32
Сообщение #2


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

Спасибо сказали: 231 раз(а)




Репутация:   40  


Примерно так:
#include <QtGui/QApplication>
#include <QTextEdit>
#include <QKeyEvent>


class CTextEdit: public QTextEdit
{
public:
    CTextEdit( QWidget *pParent = 0);

protected:
    virtual bool event( QEvent *pEvent);
};

CTextEdit::CTextEdit( QWidget *pParent):QTextEdit( pParent)
{
}

bool CTextEdit::event( QEvent *pEvent)
{
    if( pEvent->type() == QEvent::KeyPress)
    {
        QKeyEvent *pKeyEvent = static_cast<QKeyEvent *>(pEvent);
        if( pKeyEvent->key() == Qt::Key_Return) 
        {
            QString szText = toPlainText();
            if( szText.right( 1)=="{" || szText.right( 1)==":")
            {
                insertPlainText( "\r\n-->");
                return true;
            }
        }                
    }

    return QTextEdit::event( pEvent);
}

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    CTextEdit te;
    te.show();

    return a.exec();
}
Тебе осталось только получить расстояние до "{" или ":" и заменить --> на него... :)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 15.7.2025, 1:46