LINUX.ORG.RU

Сообщения Impuls

 

Удалить испускателя сигнала из слота Qt

Доброго времени суток. Появилась такая заморочка. Нужно удалить испускателя сигнала из подключенного к нему слота. Теперь подробнее: Есть метод класса наследника QObject:

void MyAPI::updateHistory(QString param){
    QNetworkAccessManager *api = new QNetworkAccessManager(this);
    connect(api, SIGNAL(finished(QNetworkReply*)), this, SLOT(historyFinished(QNetworkReply*)));
    api->get(QNetworkRequest(QUrl("https://server.com/public?command=returnHistory&param="+param)));
}
void MyAPI::historyFinished(QNetworkReply *reply){
    if (reply->error() == QNetworkReply::NoError){
        emit updatedHistory(QJsonDocument::fromJson(reply->readAll()));
    } else {
        qDebug() << reply->errorString();
        emit historyNotUpdated(reply->errorString());
    }
    qobject_cast<QNetworkAccessManager *>(sender())->deleteLater();        //Правильно ли так делать?
    reply->deleteLater();                                                  //Правильно ли так делать?
}
Все. После того, как сработал слот historyFinished, объект испускатель сигнала (QNetworkAccessManager *api) мне больше не нужен. Хотелось бы его удалить. Я поступал так, как написано в слоте, но не знаю правильно ли так делать? Я бы не сомневался, но иногда (не часто, но случается) у меня в дебаге вываливалось вот такое сообщение: Type conversion already registered from type QSharedPointer<QNetworkSession> to type QObject* И еще. Можно ли вместо reply->deleteLater(); вызывать delete reply?

Ну да ладно. Это пол беды. Такая схема у меня работала до тех пор, пока я не решил вынести реализацию в плагины. Тут тоже схема работает, но иногда при закрытии приложения, в дебаг начинают сыпаться сотни сообщений вида: QSocketNotifier: socket notifiers cannot be disabled from another thread. И приложение зависает намертво. Никак не могу понять с чем это может быть связано, но подозреваю что ноги тут растут из одного и того же места. Хотя тут у меня подозрение еще на один мой костыль. А именно - в схеме реализации плагинов, предложенном Qt, нет возможности использовать сигналы и слоты. Но задействовав костыль вида:

    connect(dynamic_cast<QObject *>(api_interface), SIGNAL(updatedHistory(QJsonDocument)), this, SLOT(history(QJsonDocument)));
Где api_interface - это объект класса интерфейса для плагина. Сигналы все таки соединяются и все работает нормально. Собственно способ честно нагуглен в интернетах - и у людей такое тоже работало прекрасно.

Так собственно о чем это я? Не подскажете в чем мой косяк? И почему данные ошибки проявляются не всегда?

 ,

Impuls
()

Монтирование файлов как файловой системы.

Доброго дня. Ситуация следующая. Был сделан бекап linux раздела с помощью dd. Вот так: dd if=/dev/sda1/ bs=8M | gzip -c «тра-та-та»/dev_sda1.bak

Так вот. Возможно ли смонтировать такой файл как файловую систему, или это нереально? Спасибо.

Impuls
()

Виртуальный PDF принтер и размер листа

Доброго времени суток уважаемые линуксоиды. Захотелось мне облегчить жизнь своим проектировщикам. Что мы имеем: имеется куча проектировщиков, имеется куча плоттеров. И проектировщики постоянно что-то шлют на плоттеры, не особо задумываясь об их загруженности.

А теперь идея. Хочу сделать виртуальный pdf принтер, на который люди бы слали свои чертежи. Далее скрипт бы просматривал отпечатанные PDFки и разбирал их по размерам. И, в зависимости от размеров pdf и загруженности плоттеров отправлял бы его на печать на тот или иной плоттер. Так и расходников пойдет меньше, и проектировщикам не нужно задумываться на какой плоттер отправить его чертеж.

Что имеется. Пока что только на тестовом стенде установлен: debian squeeze, cups, создан pdf принтер. Принтер с легкостью добавляется на windows машины, и на него можно распечатать что-нибудь. А теперь загвоздка. Бумага на плоттерах идет в рулонах, а чертежи не всегда соответствуют стандартным параметрам бумаги (читай не факт что это A3, A2, A1, A0 etc...). Бывают чертежи и по несколько метров длиной.

Так вот. Как заставить pdf принтер в cups думать, что бумага у него идет в «рулонах», а не в «листах», и чтобы ее размер задавался конечным пользователем, а не самим принтером? Возможно не совсем толковое объяснение? Если что-то не понятно, то спрашивайте - постараюсь ответить.

Заранее спасибо

 , pdf-принтер,

Impuls
()

latex - формулы и таблицы

Доброго времени суток уважаемые эксперты. Долго уже бьюсь над этими вопросами, но так и не смог их решить. Пишу диплом в eskdx.

  • Как сделать выравнивание формул по левому краю страниц а не по центру (fleqn не предлагать так как оно не работает в eskdx).
  • Как сделать выравнивание заголовков в таблице по центру (longtable).

Заранее спасибо за ваши ответы.

Impuls
()

Указать приложению пути к библиотекам, отличным от стандартных

Доброго времени суток. Собственно: имеется Debian и установленный matlab. На MatLabe написан функция и из нее скомпилирована C++ динамическая библиотека. Далее в проекте c++ пишется приложение, работающее с matLab-овскими библиотеками. Приложение компилируется, но после запуска говорит, что не может подгрузить динамические библиотеки (ибо их нету /usr/lib). Исправляю эту ситуацию вот так:

echo /usr/local/MATLAB/MATLAB_Compiler_Runtime/v716/bin/glnxa64 >> /etc/ld.so.conf.d/matlabLibs.conf
echo /usr/local/MATLAB/MATLAB_Compiler_Runtime/v716/sys/os/glnxa64 >> /etc/ld.so.conf.d/matlabLibs.conf
ldconfig
Чудно. Теперь мое приложение запускается, но не запускаются все остальные. Вот вывод в консоль после запуска synaptic:
synaptic: /usr/local/MATLAB/MATLAB_Compiler_Runtime/v716/sys/os/glnxa64/libstdc++.so.6: version `GLIBCXX_3.4.11' not found (required by synaptic)
synaptic: /usr/local/MATLAB/MATLAB_Compiler_Runtime/v716/sys/os/glnxa64/libstdc++.so.6: version `GLIBCXX_3.4.11' not found (required by /usr/lib/libapt-pkg.so.4.10)
synaptic: /usr/local/MATLAB/MATLAB_Compiler_Runtime/v716/sys/os/glnxa64/libstdc++.so.6: version `GLIBCXX_3.4.11' not found (required by /usr/lib/libapt-inst.so.1.2)
synaptic: /usr/local/MATLAB/MATLAB_Compiler_Runtime/v716/sys/os/glnxa64/libstdc++.so.6: version `GLIBCXX_3.4.11' not found (required by /usr/lib/libept.so.1)
synaptic: /usr/local/MATLAB/MATLAB_Compiler_Runtime/v716/sys/os/glnxa64/libstdc++.so.6: version `GLIBCXX_3.4.11' not found (required by /usr/lib/libxapian.so.22)
Подскажите пожалуйста как можно исправить данное недоразумение, кроме как копированием библиотек в /usr/lib?

Impuls
()

Пара вопросов по Lyx

Доброго времени суток уважаемые эксперты. Решил попробовать такого зверя как Lyx. И как всегда лучший способ изучения чего-то, сделать что-то достаточно большое.

Зарядившись энтузиазмом решил написать в нем курсовой, но проблемы начали настигать меня в самом начале(((

  • Если помечать раздел как Раздел* - он не отображается в содержании. Как это можно поменять? Нужно чтобы Введение тоже было видно в содержании
  • Как вставить картинку с подписью, чтобы потом можно было на нее ссылаться в тексте.

Ну и еще один вопрос. Может посоветуете какую-нибудь литературу по lyx, желательно на нашенском языке.

Заранее спасибо.

Impuls
()

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