crossplatform.ru

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

> QScintilla, Подробнее
edwardoid
  опции профиля:
сообщение 24.2.2009, 17:50
Сообщение #1


Участник
**

Группа: Участник
Сообщений: 171
Регистрация: 1.5.2008
Из: Ереван, Армения
Пользователь №: 164

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




Репутация:   0  


Имхо, каждый чел когда начинает писать GUI-приложения страется написать редактор. По ходу если пишешь на Qt то для нормального редактора в конце приходится использовать QScintilla.
А документация у него совсем никудышная и иерархия классов не оечьн понятна с первого взгляда. Если, вы, господа не против, давайте соберем тут решения на проблемы с которыми сталкиваешься, когда используешь QScintilla.

Проблема: Как модифицировать поведение аутокомплита? Т.е. как привязать появление окошка аутокомплита к какому-то хоткею или связке клавиш?

Я покопался в сырцах библиотеки, нигде ничего "Qt::Key" не нашел. И даже среди функций по названию ни одно вроде не подходило. Если не сложно покопайтесь и вы. Помогите, плз.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
void*
  опции профиля:
сообщение 25.2.2009, 22:33
Сообщение #2


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

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

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




Репутация:   3  


Цитата(edwardoid @ 25.2.2009, 11:27) *
ты привязал api к QsciScintilla??? Я так понял, api это переменаня типа QsciAbstractAPIs??

да, api - объект класса QsciAPIs. QsciAPIs - это класс, содержащий информацию для автокомплита, почитай внимательнее документацию по этому классу. Достаточно иметь только один объект этого класса, т.к. он shared. Нужно просто загрузить в него инфу из файлов и сделать QsciAPIs::prepare(), и для каждого используемого лексера установить эти API с помощью QsciLexer::setAPIs().

П.С.
Цитата(official documentation)
The QsciAPIs class represents the textual API information used in call tips and for auto-completion. API information is specific to a particular language lexer but can be shared by multiple instances of the lexer.

Raw API information is read from one or more files. Each API function is described by a single line of text comprising the function's name, followed by the function's optional comma separated parameters enclosed in parenthesis, and finally followed by optional explanatory text.

A function name may be followed by a `?' and a number. The number is used by auto-completion to display a registered QPixmap with the function name.

All function names are used by auto-completion, but only those that include function parameters are used in call tips.

QScintilla only deals with prepared API information and not the raw information described above. This is done so that large APIs can be handled while still being responsive to user input. The conversion of raw information to prepared information is time consuming (think tens of seconds) and implemented in a separate thread. Processed information can be quickly saved to and loaded from files. Such files are portable between different architectures.

QScintilla based applications that want to support large APIs would normally provide the user with the ability to specify a set of, possibly project specific, raw API files and convert them to prepared files that are loaded quickly when the application is invoked.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме
- edwardoid   QScintilla   24.2.2009, 17:50
- - void*   ЦитатаИмхо, каждый чел когда начинает писать GUI-п...   24.2.2009, 18:24
- - Litkevich Yuriy   Цитата(void* @ 24.2.2009, 21:24) т.к. это...   24.2.2009, 18:32
- - edwardoid   Не понял. Во первых, они виртуальные. Не должен ли...   24.2.2009, 19:47
- - void*   ЦитатаНе понял. Во первых, они виртуальные. Не дол...   24.2.2009, 22:14
|- - edwardoid   Цитата(void* @ 25.2.2009, 0:14) Во-вторых...   1.7.2009, 1:35
- - edwardoid   твой код у меня скомпилился, но никак не реагирует...   24.2.2009, 22:37
- - void*   Значит нет информации для автокомплита. Я проверил...   24.2.2009, 22:47
- - edwardoid   this->setAutoCompletionSource(QsciScintill...   25.2.2009, 12:27
|- - AD   Цитата(edwardoid @ 25.2.2009, 12:27) CODE...   25.2.2009, 13:04
- - edwardoid   void* есть идеи?   25.2.2009, 20:53
- - void*   Цитата(edwardoid @ 25.2.2009, 11:27) ты п...   25.2.2009, 22:33
- - edwardoid   скомпилилось, но выдает ошибку Segmentation Fault:...   26.2.2009, 13:57
- - void*   у тебя SDI или MDI-приложение? Если MDI, то придет...   26.2.2009, 15:28
- - edwardoid   приложение MDI void EEdit::loadApi(...   26.2.2009, 16:53
- - void*   хм... вроде все правильно. Попробуй еще так: void ...   26.2.2009, 18:15
- - edwardoid   один хрен. только на аутпуте: c.api   26.2.2009, 18:48
- - void*   Тогда у меня варианты закончились. Попробуй опреде...   26.2.2009, 20:25
- - edwardoid   вся проблемя в этой строке: api->load(dir....   26.2.2009, 23:18
- - void*   замени: if(api_path!="." &...   27.2.2009, 1:03
- - edwardoid   непонятно... он даже не скомпилился... Компилил K...   27.2.2009, 12:49
- - void*   добавь #include <QtDebug>   27.2.2009, 13:42
- - molchanoviv   Я за время перерыва уже подзабыл, но разве не QDeb...   27.2.2009, 14:09
- - edwardoid   Output: /home/edward/Shushi/UnitedEditor /home/...   27.2.2009, 14:18
- - void*   Цитата(molchanoviv @ 27.2.2009, 13:09) Я ...   27.2.2009, 17:04
|- - edwardoid   /home/edward/Shushi/UnitedEditor сорри, это не аут...   28.2.2009, 13:33
- - void*   но у меня он почему-то нормально работает... прикр...   28.2.2009, 18:49
- - edwardoid   http://ifolder.ru/10789660 eedit.h + edit.cpp + ap...   28.2.2009, 19:00
- - void*   1) Т.к приложение у тебя MDI, то возможно что проб...   1.3.2009, 14:37
- - edwardoid   Такая проблема: QsciScintilla помещен в QWidget ко...   28.8.2009, 12:55


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


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




RSS Текстовая версия Сейчас: 3.1.2025, 1:09