LINUX.ORG.RU

Qt - Вывод информации в консоль - qjsengine

 ,


1

4

Вопрос по qjs api (qjsengine) бывший qtscript.

Когда выводишь в консоль к примеру командой: «print(„hello world!“); Получается след. выхлоп: „js: hello world!“

Вопрос как избавиться от приставки „js: “ - сделать чистый вывод без этого информационного дополнения???? В qtscript такого не было....

Можно воткнуть свой объект из С++ и запилить в нем функцию print

annulen ★★★★★ ()
Ответ на: комментарий от wolph

Мне нужен чистый вывод в консоль, для облегчения обработки выхлопа сторонними программами. Такое поведение прописано в стандарте «POSIX».

К примеру, если нужно получить результат операции «3+2», проще обработать выхлоп: «5», чем «js: 5»

sukhorukov ()
Ответ на: комментарий от wolph

Костыль сработал. Но это костыль, кто его знает, где всплывет... Спасибо.

Код следующий:

qInstallMessageHandler(messageHandler);

void messageHandler(const QtMsgType type, const QMessageLogContext &context, const QString &msg)
{
    Q_UNUSED(context)

    switch(type){
    case QtDebugMsg:
        qDebug() << msg.toUtf8().constData();
        break;
    case QtWarningMsg:
        qWarning() << msg.toUtf8().constData();
        break;
    case QtCriticalMsg:
        qCritical() << msg.toUtf8().constData();
        break;
    case QtFatalMsg:
        qFatal(msg.toUtf8().constData());
        break;
    case QtInfoMsg:
        qInfo() << msg.toUtf8().constData();
        break;
    }
}

sukhorukov ()
Ответ на: комментарий от sukhorukov

А почему «костыль», если это официальный способ перегрузить отладочный вывод?

wolph ★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.