Сделайте так, чтобы сообщение отладки отображалось во всплывающем окне, а не на панели QtCreator - PullRequest
0 голосов
/ 11 февраля 2019

Я хочу, чтобы отладочное сообщение отображалось во всплывающем окне, например, в окне cmd, а не на панели Qt Creator, особенно в выходных данных приложения.Я поставил CONFIG += console.но это только дает пустое окно.Для демонстрации ниже приведен простой отладочный файл, генерирующий файл cpp:

#include "mytimer.h"

myTimer::myTimer(QObject *parent) : QThread(parent)
{
    moveToThread(this);

    QTimer timer;
    timer.setInterval(1000);
    timer.start();


    connect(&timer,SIGNAL(timeout()),this,SLOT(timerHandler()), Qt::DirectConnection);
    exec();

    timer.stop();
}

void myTimer::timerHandler()
{
    qDebug()<<"timerHandler called"; //here is a debug message
}

myTimer::~myTimer()
{
    quit();
    wait();
}

Здесь следующий файл .pro

QT       += core gui

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = Timer
TEMPLATE = app

CONFIG += console

SOURCES += \
        main.cpp \
        mainwindow.cpp \
    mytimer.cpp

HEADERS += \
        mainwindow.h \
    mytimer.h

FORMS += \
        mainwindow.ui

Ответы [ 2 ]

0 голосов
/ 12 февраля 2019

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

0 голосов
/ 11 февраля 2019

Вы говорите «всплывающее» окно, но затем упоминаете окно cmd, поэтому я не совсем уверен, что вы хотите.

Если вы хотите перенаправить сообщение об ошибке в окно терминала,установите флажок «Запуск в терминале» в настройках запуска.Возможно, вам также придется использовать cout вместо qDebug ().

Если вы хотите настоящее всплывающее окно, вам нужно будет создать виджет.Я бы порекомендовал QMessageBox, так как он довольно прост в использовании.

QMessageBox *qmb;
qmb = new QMessageBox(QMessageBox::NoIcon,
                title,
                text,
                QMessageBox::Ok,
                this);
qmb->exec();
delete qmb;

Трудно сказать, почему вы не видите никаких выходных данных - это может быть ОС, или это может быть что-то блокирующее в вашем приложении (хотя я догадываюсь нет).Вы всегда можете попробовать старый добрый fflush(stdout); после вызова qDebug ().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...