qt - QML console.log() 和 console.debug() 不写入控制台

标签 qt qml fedora

我在 Fedora 23 上使用 Qt 5.6,我注意到 console.log()console.debug() 不会向控制台写入任何内容。我的示例代码:

import QtQuick 2.6
import QtQuick.Window 2.2

Window {
    visible: true

    Text {
        text: qsTr("Hello World")
        anchors.centerIn: parent

        Component.onCompleted: {
            console.warn("warn completed")
            console.log("log completed")
            console.error("error completed")
            console.debug("debug completed")
            console.exception("exception completed")
            console.info("info completed")
        }
    }
}

打印到控制台:

QML debugging is enabled. Only use this in a safe environment.
qml: warn completed
qml: error completed
qml: exception completed
onCompleted (qrc:/main.qml:16)
qml: info completed

所以警告错误异常信息工作正常。我做错了什么?

编辑#1: 项目是新创建的,我的所有来源:

main.cpp

#include <QGuiApplication>
#include <QQmlApplicationEngine>

int main(int argc, char *argv[])
{
    QGuiApplication app(argc, argv);

    QQmlApplicationEngine engine;
    engine.load(QUrl(QStringLiteral("qrc:/main.qml")));

    return app.exec();
}

项目.pro

TEMPLATE = app

QT += qml quick
CONFIG += c++11

SOURCES += main.cpp

RESOURCES += qml.qrc

# Additional import path used to resolve QML modules in Qt Creator's code model
QML_IMPORT_PATH =

# Default rules for deployment.
include(deployment.pri)

编辑#2: Qt Creator 的编译输出显示没有 QT_NO_DEBUG_OUTPUTQT_NO_INFO_OUTPUTQT_NO_WARNING_OUTPUT:

14:43:36: Running steps for project project...
14:43:36: Configuration unchanged, skipping qmake step.
14:43:36: Starting: "/usr/bin/make" 
g++ -c -pipe -g -std=gnu++0x -Wall -W -D_REENTRANT -fPIC -DQT_QML_DEBUG -DQT_QUICK_LIB -DQT_GUI_LIB -DQT_QML_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -I../project -I. -I../../Qt5.6.0/5.6/gcc_64/include -I../../Qt5.6.0/5.6/gcc_64/include/QtQuick -I../../Qt5.6.0/5.6/gcc_64/include/QtGui -I../../Qt5.6.0/5.6/gcc_64/include/QtQml -I../../Qt5.6.0/5.6/gcc_64/include/QtNetwork -I../../Qt5.6.0/5.6/gcc_64/include/QtCore -I. -I../../Qt5.6.0/5.6/gcc_64/mkspecs/linux-g++ -o main.o ../project/main.cpp
/home/krzys/Qt5.6.0/5.6/gcc_64/bin/rcc -name qml ../project/qml.qrc -o qrc_qml.cpp
g++ -c -pipe -g -std=gnu++0x -Wall -W -D_REENTRANT -fPIC -DQT_QML_DEBUG -DQT_QUICK_LIB -DQT_GUI_LIB -DQT_QML_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -I../project -I. -I../../Qt5.6.0/5.6/gcc_64/include -I../../Qt5.6.0/5.6/gcc_64/include/QtQuick -I../../Qt5.6.0/5.6/gcc_64/include/QtGui -I../../Qt5.6.0/5.6/gcc_64/include/QtQml -I../../Qt5.6.0/5.6/gcc_64/include/QtNetwork -I../../Qt5.6.0/5.6/gcc_64/include/QtCore -I. -I../../Qt5.6.0/5.6/gcc_64/mkspecs/linux-g++ -o qrc_qml.o qrc_qml.cpp
g++ -Wl,-z,origin -Wl,-rpath,\$ORIGIN -Wl,-rpath,/home/krzys/Qt5.6.0/5.6/gcc_64/lib -o project main.o qrc_qml.o   -L/home/krzys/Qt5.6.0/5.6/gcc_64/lib -lQt5Quick -lQt5Gui -lQt5Qml -lQt5Network -lQt5Core -lGL -lpthread 
14:43:37: The process "/usr/bin/make" exited normally.
14:43:37: Elapsed time: 00:01.

最佳答案

Fedora 22 及更高版本默认禁用 Qt 调试输出 [1]。您可以通过修改系统范围的 /etc/xdg/QtProject/qtlogging.ini 或创建用户特定的配置文件 ~/.config/QtProject/qtlogging 来启用 Qt 调试输出。 ini 例如,包含以下内容:

[Rules]
*.debug=true
  1. https://bugzilla.redhat.com/show_bug.cgi?id=1227295

关于qt - QML console.log() 和 console.debug() 不写入控制台,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36338000/

相关文章:

vim - .vimrc 导致错误 (E10 :\should be followed by/, ? 或 &)

Python 3.9 - 安装不正确,无法导入 SSL

c++ - QT c++ QSplitter saveState和restoreState

qt - 如何将数据作为 QByteArray/QDataStream 从服务器发送到客户端

c++ - 让 Qt 应用程序使用 GTK 主题?

C++ 指针 GUI QT

qt - 如何在不禁用整个控件的情况下禁用 TextArea 的鼠标滚轮?

c++ - 使用 QSGImageNode 渲染非平滑 QImage 的一部分

qt - 如何在 TableView rowDelegate 中右键单击时显示上下文菜单

android - MXQ-4K安卓盒子如何连接Linux上的Android Studio