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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: QSyntaxHighlighter для SQL  (Прочитано 5603 раз)
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« : Апрель 22, 2010, 19:51 »

Есть у кого-нибудь готовый класс? Поделитесь, если не жалко.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #1 : Апрель 23, 2010, 08:27 »

Код
C++ (Qt)
class SQLSyntaxHighlighter : public QSyntaxHighlighter
{
public:
   SQLSyntaxHighlighter (QTextEdit *te) : QSyntaxHighlighter (te) {}
 
   virtual void highlightBlock (const QString& text)
   {
int pos = 0;
 
static QRegExp rgx ("^\\s*(--)");
 
if ((pos = rgx.search (text, pos)) != -1)
{
setFormat (pos, text.length(), Qt::green);
return;
}
 
setFormat (0, text.length(), Qt::black);
 
static QRegExp rw_rgx ("\\b(?:select|from|where|and|case|when|then|else|distinct|all|null|"
"is|like|between|not|count|group|by|having|order|inner|outer|right|left|"
"join|on|using|union|exists|in|as|intersect|except|coalesce|insert|delete|into|update)\\b", false);
 
pos = 0;
while ((pos = rw_rgx.search (text, pos)) != -1)
{
setFormat (pos, rw_rgx.matchedLength(), Qt::blue);
pos += rw_rgx.matchedLength();
}
 
static QRegExp o_rgx (":(\\w*)");
 
pos = 0;
while ((pos = o_rgx.search (text, pos)) != -1)
{
setFormat (pos, o_rgx.matchedLength(), Qt::red);
pos += o_rgx.matchedLength();
}
   }
};
 
« Последнее редактирование: Май 28, 2010, 15:59 от GreatSnake » Записан

Qt 5.11/4.8.7 (X11/Win)
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #2 : Апрель 23, 2010, 11:23 »

Спасибо, есть с чего стартовать.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
ритт
Гость
« Ответ #3 : Май 15, 2010, 17:54 »

мб выложишь своё решение и переместишь тему в доп.компоненты?
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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