2012-08-02 16 views
7

क्यूटी निर्माता "एप्लिकेशन आउटपुट" विंडो में आउटपुट करने के लिए मैं क्यूटी कंसोल एप्लिकेशन में qDebug का उपयोग कैसे करूं? वर्तमान में qDebug कंसोल विंडो को लिखता है जो गैर-डीबग आउटपुट में हस्तक्षेप करता है।qtebug क्यूटी कंसोल एप्लिकेशन Qt निर्माता अनुप्रयोग आउटपुट को आउटपुट करने के लिए

क्यूटी जीयूआई ऐप में qDebug का उपयोग डिफ़ॉल्ट रूप से एप्लिकेशन आउटपुट विंडो में आउटपुट करता है।

Application output

उत्तर

2

कई स्थानों के लिए QDebug अनुप्रेषित करने के लिए आपको कुछ कोड लिखने के लिए हो सकता है, हो सकता है इस तरह:

QList<QtMsgHandler> messageHandlers_; 

static void messageDispatcher(QtMsgType type, const char *msg) 
{ 
    foreach (QtMsgHandler callback, ::messageHandlers_) 
    callback(type, msg); 
} 

static void messageLogger(QtMsgType type, const char *msg) 
{ 
    QString output; 
    switch (type) { 
    case QtDebugMsg: output = QString("mesage: %1\n").arg(msg); break; 
    case QtWarningMsg: output = QString("warning: %1\n").arg(msg); break; 
    case QtCriticalMsg: output = QString("critical: %1\n").arg(msg); break; 
    case QtFatalMsg: output = QString("fatal: %1\n").arg(msg); break; 
    default: return; 
    } 

    QFile file("log.txt"); 
    if (file.open(QIODevice::WriteOnly | QIODevice::Append)) 
    QTextStream(&file) << output; 
} 

int main() 
{ 
    ... 
    ::messageHandlers_.append(messageLogger) 
    qInstallMsgHandler(messageDispatcher); 
    ... 
} 
+0

यह कोड काम नहीं करता है। सुनिश्चित नहीं है कि यह कोड नमूने में टाइपों की वजह से है (जिसमें से कम से कम एक प्रतीत होता है) या क्योंकि 2013 से क्यूटी प्रगति हुई है और उत्तर बहिष्कृत कॉल का उपयोग करता है। –

6

आप सांत्वना देने या तो उत्पादन सब कुछ या क्यूटी निर्माता के आवेदन आउटपुट पैनल के लिए सब कुछ कर सकते हैं।

पूर्णता के लिए: यदि आप कंसोल के बजाय पैनल में सभी आउटपुट रखना चाहते हैं तो आप प्रोजेक्ट-> रन सेटिंग्स में "टर्मिनल में चलाएं" अनचेक कर सकते हैं।

+0

मैं जानता हूँ कि ... लेकिन मैं चाहता हूँ दो अलग-अलग स्थानों के लिए उत्पादन ... यही कारण है कि अपने डिबग है उत्पादन। – Eugene

+0

दुर्भाग्य से आप ऐसा नहीं कर सकते हैं। – Bojan

+2

मेरे पास "टर्मिनल में चलाएं" अनचेक है और अभी भी मेरे ऐप से कोई आउटपुट नहीं दिख रहा है। std :: cout, qDebug कुछ भी आउटपुट नहीं करता – Dmitriy