LINUX.ORG.RU

Сообщения Onito

 

QML и C++

Всем привет

Есть такой класс

class ComponentCacheManager : public QObject {
    Q_OBJECT
public:
    ComponentCacheManager(QQmlEngine *engine) : engine(engine) { }

    Q_INVOKABLE void trim() { engine->clearComponentCache(); }

private:
    QQmlEngine *engine;
};

сейчас он интегрируется в qml таким образом

engine.rootContext()->setContextProperty(QStringLiteral("componentCache"), new ComponentCacheManager(&engine));

Но хотелось бы создавать его в QML когда это нужно, а значит его нужно регистрировать как QML type таким образом

qmlRegisterType<ComponentCacheManager>("ComponentCacheManager", 1, 0, "ComponentManager");

в таком случае как мне вызывать конструктор? Или если делать дефолтный конструктор пустым то как проинициализировать поле QQmlEngine *engine;

 , ,

Onito
()

создание подключаемых библиотек для проекта под android в qt

Всем привет, вот файлы библиотеки

.pro файл

#-------------------------------------------------
#
# Project created by QtCreator 2015-03-29T23:59:10
#
#-------------------------------------------------

QT       += core gui

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = testlib
TEMPLATE = lib


SOURCES += \
    testlib.cpp

HEADERS  += \
    testlib.h

FORMS    +=

CONFIG += mobility
MOBILITY = 

testlib.h

#ifndef TESTLIB
#define TESTLIB

int func();

#endif // TESTLIB

testlib.cpp

#include "testlib.h"

int func()
{
    return 5;
}

если целью для сборки выбрать андроид x86 то он будет писать что файл .pro не найден: Внутренняя ошибка: файл .pro не найден. Ошибка при сборке/установке проекта testlib (комплект: Android для x86 (GCC 4.9, Qt 5.4.1) ) Во время выполнения этапа «Сборка Android APK»

если в .pro заменить lib на app то он всё соберёт и в итоге будет файл с расширением libtestlib.so

тестовый проект:

файл .pro

#-------------------------------------------------
#
# Project created by QtCreator 2015-03-30T00:03:52
#
#-------------------------------------------------

QT       += core gui

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = testproject
TEMPLATE = app


SOURCES += main.cpp

HEADERS  += \
    testlib.h

CONFIG += mobility
MOBILITY = 

DISTFILES +=

win32:CONFIG(release, debug|release): LIBS += -L$$PWD/release/ -ltestlib
else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/debug/ -ltestlib
else:unix: LIBS += -L$$PWD/ -ltestlib

INCLUDEPATH += $$PWD/
DEPENDPATH += $$PWD/

main.cpp

#include <QApplication>
#include "testlib.h"

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();

    return a.exec();
}

Так вот. Если тестовый проект собрать под андроид x86 то всё будет нормально, никаких ошибок во время сборки, но если попытаться запустить его через qt в эмуляторе то будет следующее: dlopen(«/data/app/org.qtproject.example.testproject-1/lib/x86/libtestproject.so», RTLD_LAZY) failed: dlopen failed: could not load library «libtestlib.so» needed by «libtestproject.so»; caused by library «libtestlib.so» not found D/AndroidRuntime( 2205): Shutting down VM E/AndroidRuntime( 2205): FATAL EXCEPTION: main E/AndroidRuntime( 2205): Process: org.qtproject.example.testproject, PID: 2205 E/AndroidRuntime( 2205): java.lang.UnsatisfiedLinkError: dlopen failed: could not load library «libtestlib.so» needed by «libtestproject.so»; caused by library «libtestlib.so» not found

Объясните пожалуйста как собирать либы для андроида.

 ,

Onito
()

Вопрос к алгоритмистам

Задача: массив фиксированного размер, метод добавления элементов не определён(требуется указать в решении), метод извлечения элементов произвольный(то есть любой элемент можно извлечь вне зависимости от других элементов). В случае переполнения массива каждый раз удалять самый старый элемент на данный момент времени и заменять его новым. Какие ваши будут предложения по решению этой задачи с желательно константным временем работы, или среднее время поиска должно быть константным. А может где эта задача уже решалась, то подскажите ресурс :) я знаю решение со средним временем поиска равным константе.

Onito
()

вопрос про epoll

Усем привет, увидел на вики параметр EPOL_CTL_DISABLE, почему про него нигде больше нет упоминаний, и что за дела с безопасным удалением в многотредных приложениях? А если просто EPOLL_CTL_DEL типо не безопасно удалять если один дескриптор в нескольких потоках?

Onito
()

падает интернет

В общем ситуация такая, если в бубунте через вай фай включить торрент то через примерно 5-10секунд отваливает интернет, через провод писюк работает, планшет через вафлю работает, на ноуте где собсна бубунта соединение типо есть но ничего не работает, и так пока роутер не перезагрузишь. роутер tp-link wdr4300

Onito
()

Тормозит chromium

Сегодня со мной произошло уже много нового :) и вот теперь у меня зависает отрисовка элементов GUI в хромиуме, на этот раз под бубунтой, поставил её себе на ноут чтоб не париться и вот такая хрень :). Если точно то заголовок окна обновляется, даже папка с избранным открывается( после установки, и до ребута хромиум работал как надо, а после ребута и аварийного завершения началось это), но если навести мышку на адресную строку, крестик закрытия вкладки то мышка поменяют форму а браузер никак не отреагирует сколько ни кликай, а если зайти в вк то мышка меняет форму при наведении на элементы меню по памяти, но ничего не видно :(

Onito
()

синхронизация chromium

Всем привет. только что в первый раз столкнулся с ошибкой при синхронизации хромиума: service unavailable; try again later. Это я что-то не так сделал или у них сервер сломался? Первый раз такое просто :)

Onito
()

время жизни tcp сессии

Усем привет, как на уровне tcp/ip закрывать неактивные соединения

Onito
()

Про оптимизацию кода

Усем привет, опция для gcc -O0 отключает все оптимизации? Ну тоесть совсем? А то просто я решил проверить время выполнения функции, и одна итерация занимает 1 мкр а скажем 50к итераций 1к мкр, входны данные использую одни и теже каждый раз, время считаю clock_gettime( CLOCK_REALTIME, &start) или например если я хочу проверить сколько времени займёт вызов pthread_mutex_lock(&mutex); pthread_mutex_unlock(&mutex); то для 1 вызова будет 1мкр, а для техже 50к 1.6к мкр

Onito
()

параллельный вызов accept

усем привет, помню где-то читал что можно вызывать accept из нескольких потоков, и там были указаны реализации которые это поддерживают а какие нет, может кто метнуть ссылочку на подобный материал?

 

Onito
()

Вывод текста в консоли

Всем привет, столкнулся с такой проблемой: консольное приложение после очередной доработки начало выводить на экран два слова readread при этом я пробовал комментить все cout и тд. - всё равно выводит. Единственная зацепка, в очередном патче я добавил вызов функции socketpair, но у меня уже были вызовы этой функции и ничего не выводилось. Код приводить не буду ибо там около 3к строк которые никто читать не будет :)

Onito
()

работа графики в хромиуме

Всем привет, я поставил драйвер nouveau и хромиум сразу без проблем на странице chrome://gpu/ отобразил что всё аппаратно ускоряется, но первый же тест на ютубе меня огорчил загрузкой проца на 60-70%, чё за дела?

Onito
()

наложение текста на пикчу

Всем привет, кто подскажет как наложить текст на пикчу на плюсах? есть просто текст и картинка jpg

Onito
()

вопрос по unordered_map

Всем привет, такие вопросы: является ли unordered_map самым быстрым среди ассоциативных массивов по доступу по ключу? И может кто знает где посмотреть сравнительное тестирование производительности по случайному доступу по ключу различных контейнеров? И что вообще посоветуете для хранения таких пар «UUID»->«lol» которых не больше 100к и размер значения может быть большим.

Onito
()

Ввод-вывод при использовании select

Всем привет, не подскажите как правильно работать с вводом выводом при использовании select? Проблема вот в чём: если я делаю вывод std::cout << '1'; а после него жду данные на вход с помощью select, то пока эти данные не придут 1 никогда не выведется, с fputs тоже самое, но если я сделаю так: std::cout << '1' << std::endl; то всё работает как надо, всё кроме наличия лишнего переноса строки. Попробовал загуглить но ничего не вышло :( сори за глупый вопрос :).

Onito
()

Вопрос по созданию устойчивого соединения

Всем привет, подскажите какой есть аналог SO_KEEPALIVE, в том смысле что этот параметр выполняет проверку при отсутствии трафика в течении 2 часов, а нужно допустим 15 секунд. Просто если изменять поведения параметра SO_KEEPALIVE, то это отразится на всю систему, а это нежелательно.

Onito
()

управление потоком блокируемом в функции pselect

Всем привет, ситуация такая: я использую два потока: основной - в нём вся логика и дополнительный - в нём вся работа с сетью. Дополнительный поток большую часть времени блокирован в вызове pselect и я устанавливаю маску сигналов и когда мне нужно завершить работу приложения я отсылаю сигнал SIGINT дополнительному потоку и всё чики-пики. А теперь я хочу отсылать дополнительному потоку команды, скажем я создаю буфер и в него пишу что-то, пример команды:«соединиться с адресом ...». Ну мне нужно чтобы дополнительный поток сразу реагировал на это, и вот я подумал сделать так: я пишу в буфер и отсылаю сигнал SIGIO который перехватывается также как и SIGINT. Что думаете о таком подходе?

Onito
()

Вопрос по SCTP

Всем привет, я использую qt в качестве ide в качестве компилятора gcc, проблема такая: подключаю как и везде написано -

#include <sys/types.h> #include <sys/socket.h> #include <netinet/sctp.h>

int main() { sctp_recvmsg(/*параметры*/); }

когда пишу функции начинающиеся на sctp_(что-нибудь) ide радостно автодополняет и тд. но на момент компиляции пишет что все эти функции не существуют, например: error: undefined reference to `sctp_recvmsg' error: undefined reference to `sctp_opt_info' В инете искал но ничего по такой проблеме не нашел( мб плохо искал) подскажите что здесь не так? P.S. sctp.h небыло изначально, в инете нашел что он отдельно устанавливается:sudo apt-get install libsctp-dev lksctp-tools мб тут что не так?

Onito
()

Выбор видеокарты

Всем привет, вот решил себе новый комп собирать, юзаю дебиан, какую видюху посоветуете? амд или нвидиа? С нвидиа больше проблем и нет свободного драйвера, но для видюх амд вроде тож больше нет свободного драйвера, тоесть он больше не развивается если верить этому сайту http://cgit.freedesktop.org/xorg/driver/xf86-video-radeonhd/plain/README . Какие ваши предложения? :)

Onito
()

вопрос по потокам

Всем привет, не подскажите что происходит и как ведёт себя код в такой ситуации: есть запрос на завершение потока и следующий фрагмент кода:

    pthread_setcancelstate(PTHREAD_CANCEL_ENABLE, &OldS);

    pthread_setcanceltype(PTHREAD_CANCEL_DEFERRED, &OldT);

    pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, &OldT);

    usleep(1000*1000);

    pthread_setcancelstate(PTHREAD_CANCEL_ENABLE, &OldS);

    pthread_setcanceltype(PTHREAD_CANCEL_DEFERRED, &OldT);

этот код как бы игнорирует вызов pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, &OldT);

и завершается при вызове usleep как и должно было бы быть без pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, &OldT); Не подскажите чем вызвано такое поведение? Понятное дело что я чегото не понимаю но по идее на момент выполнения usleep все запросы на завершения игнорируются а после устанавливаются на отсроченный и поток завершается либо на вызове testcancel либо по завершении своей задачи.

Onito
()

RSS подписка на новые темы