crossplatform.ru

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

3 страниц V  < 1 2 3 >  
Ответить в данную темуНачать новую тему
> QScintilla, Подробнее
void*
  опции профиля:
сообщение 25.2.2009, 22:33
Сообщение #11


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

Группа: Участник
Сообщений: 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
  опции профиля:
сообщение 26.2.2009, 13:57
Сообщение #12


Участник
**

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

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




Репутация:   0  


скомпилилось, но выдает ошибку Segmentation Fault:
Структура файлов вроде нормальная, в папке с прогой папка "apis" где файлы скаченные у тебя: c.api и cpp.api.
Но скотина все равно ругаеццо...
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
void*
  опции профиля:
сообщение 26.2.2009, 15:28
Сообщение #13


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

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

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




Репутация:   3  


у тебя SDI или MDI-приложение? Если MDI, то придется пойти на некоторый изврат, т.к. существует одна проблемка. Если же SDI - то все должно работать нормально, приведи лучше тогда код и строчку где именно вылетает.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
edwardoid
  опции профиля:
сообщение 26.2.2009, 16:53
Сообщение #14


Участник
**

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

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




Репутация:   0  


приложение MDI
void EEdit::loadApi()
{

    QDir dir(QApplication::applicationDirPath());
    dir.cd("apis");
    QStringList lst = dir.entryList();
    foreach(QString api_path, lst) {
        qDebug(api_path.toStdString().c_str());
        if(api_path!="." && api_path!="..") {
            api->load(dir.absolutePath() + "/" + api_path);
        }
    }";    
    api->prepare();
}


qDebug выдает:
.
..
c.api
--------------------------------
Ошибка возникает в теле foreach
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
void*
  опции профиля:
сообщение 26.2.2009, 18:15
Сообщение #15


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

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

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




Репутация:   3  


хм... вроде все правильно. Попробуй еще так:
void EEdit::loadApi()
{

    QDir dir(QApplication::applicationDirPath());
    dir.cd("apis");
    QStringList lst = dir.entryList(QDir::Files | QDir::NoDotAndDotDot);
    foreach(QString api_path, lst) {
        qDebug(api_path.toStdString().c_str());
        if(api_path!="." && api_path!="..") {
            api->load(dir.absolutePath() + "/" + api_path);
        }
    }";    
    api->prepare();
}
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
edwardoid
  опции профиля:
сообщение 26.2.2009, 18:48
Сообщение #16


Участник
**

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

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




Репутация:   0  


один хрен. только на аутпуте:
c.api
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
void*
  опции профиля:
сообщение 26.2.2009, 20:25
Сообщение #17


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

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

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




Репутация:   3  


Тогда у меня варианты закончились. Попробуй определить конкретно строчку на которой прога падает, может что-нибудь еще станет понятнее
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
edwardoid
  опции профиля:
сообщение 26.2.2009, 23:18
Сообщение #18


Участник
**

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

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




Репутация:   0  


вся проблемя в этой строке:
api->load(dir.absolutePath() + "/" + api_path);
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
void*
  опции профиля:
сообщение 27.2.2009, 1:03
Сообщение #19


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

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

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




Репутация:   3  


замени:
        if(api_path!="." && api_path!="..") {
            api->load(dir.absolutePath() + "/" + api_path);
        }

на
        if(api_path!="." && api_path!="..") {
            qDebug() << (dir.absolutePath() + "/" + api_path);
            api->load(dir.absolutePath() + "/" + api_path);
        }

и посмотри что выведет.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
edwardoid
  опции профиля:
сообщение 27.2.2009, 12:49
Сообщение #20


Участник
**

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

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




Репутация:   0  


непонятно... он даже не скомпилился...

Компилил KDevelop+gcc
-----------------
cd '/home/edward/Shushi' && LC_MESSAGES="C" LC_CTYPE="C" make -k
compiling eedit.cpp (g++)
eedit.cpp:147: error: invalid use of incomplete type 'struct QDebug'
/usr/include/qt4/QtCore/qglobal.h:1403: error: forward declaration of 'struct QDebug'
/usr/include/qt4/QtCore/qglobal.h:1406: warning: inline function 'QDebug qDebug()' used but never defined
*** Exited with status: 2 ***
-----------------
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

3 страниц V  < 1 2 3 >
Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


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




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