使用Qt开发Android应用程序(Qt on Android),连接安卓手机真机调试时无法使用qDebug函数输出调试信息的解决方法

    技术2026-08-17  14

        在搭建好Qt on Android的开发环境,我们就可以使用Qt开发安卓应用程序了。但是通过USB口连接安卓手机进行真机调试时,我们可能会发现无法使用qDebug函数输出调试信息。这个时候我们可以使用adb输出调试信息。adb在android SDK中,使用前请先安装android SDK并设置相应的环境变量。下面以一个简单的Qt程序为例子讲解adb的使用,该程序的作用是创建一个界面,在界面中有一个按钮,每点一次这个按钮都会输出一次调试信息。

     

    clog.h

    #ifndef CLOG_H #define CLOG_H #include <android/log.h> #define LOG_TAG "QtDebug" //#define LOGW(str) __android_log_write(ANDROID_LOG_WARN,LOG_TAG,str) #define LOG(...) __android_log_print(ANDROID_LOG_DEBUG ,LOG_TAG, __VA_ARGS__) #endif // CLOG_H

     

    mainwindow.h

    #ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> namespace Ui { class MainWindow; } class MainWindow : public QMainWindow { Q_OBJECT public: explicit MainWindow(QWidget *parent = 0); ~MainWindow(); private slots: void onBtnClicked(); private: Ui::MainWindow *ui; }; #endif // MAINWINDOW_H

     

    main.cpp

    #include "mainwindow.h" #include <QApplication> int main(int argc, char *argv[]) { QApplication a(argc, argv); MainWindow w; w.show(); return a.exec(); }

     

    mainwindow.cpp

    #include "mainwindow.h" #include "ui_mainwindow.h" #include "clog.h" MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); connect(ui->pushButton, SIGNAL(clicked()), this, SLOT(onBtnClicked())); LOG("hehe"); } MainWindow::~MainWindow() { delete ui; } void MainWindow::onBtnClicked() { static int count = 0; LOG("clicked:%d",count++); }

     

     

    mainwindow.ui

     

    要想输出调试信息,先在cmd中输入:

    adb logcat -c adb logcat -s QtDebug

     

    然后在QtCreator中点击运行按钮,将程序部署到手机

     

     

    即可看到命令提示符中输出了相应的调试信息

    Processed: 0.008, SQL: 9