qt creator开发一个Linux 下运行的无界面的程序

  1. 安装 Qt 和 Qt Creator
    确保你已经安装了 Qt 和 Qt Creator。如果没有,按以下步骤安装:
cpp 复制代码
在 Ubuntu 上安装 Qt 和 Qt Creator:
sudo apt update
sudo apt install qtcreator qtbase5-dev

在其他 Linux 系统上:

请参考 Qt 官网 或系统的包管理器进行安装。

  1. 创建一个无界面程序

    打开 Qt Creator,点击 文件 -> 新建文件或项目。

    在弹出的对话框中选择 应用程序 -> Qt 控制台应用程序,然后点击 选择。

    输入项目名称,选择存储路径,点击 下一步。

    选择合适的 Qt 版本(确保你选择的是 Qt 5 或 Qt 6,取决于你的安装版本),点击 下一步。

    在构建套件中选择你正在使用的 Linux 环境配置,然后点击 完成。

  2. 修改项目代码为无界面程序

    Qt 控制台应用程序通常会包含一个 QApplication 对象,而这个对象通常是用于 GUI(图形界面)应用。如果你要创建一个无界面程序,我们将使用 QCoreApplication,它不依赖图形界面,因此更适合做后台、服务类等无界面的任务。

示例代码:

cpp 复制代码
修改 main.cpp 文件,使其成为一个无界面的程序:

#include <QCoreApplication>
#include <QDebug>
#include <QDateTime>  // 添加这个头文件
int main(int argc, char *argv[])
{
    // 使用 QCoreApplication 而不是 QApplication
    QCoreApplication a(argc, argv);

    // 你的程序逻辑
    qDebug() << "Hello, this is a headless Qt application running on Linux.";

    // 模拟一个后台任务
    for (int i = 0; i < 5; ++i) {
        qDebug() << "Running task" << i;
        QThread::sleep(1);  // 模拟任务执行
    }

    // 退出应用
    return a.exec();
}

在这个例子中,我们使用了 QCoreApplication,它不需要窗口管理,因此更适合无界面程序。qDebug() 用于在控制台输出日志信息,QThread::sleep(1) 模拟了一个简单的任务延迟。

  1. 构建并运行
    4.1 构建项目
    点击 Qt Creator 的绿色 构建按钮(或者按 Ctrl + R),构建你的项目。确保没有错误,并且编译成功。

4.2 运行项目

在 Qt Creator 中点击 运行按钮(或者按 Ctrl + R)。此时,程序将运行,并且控制台中会显示输出内容:

cpp 复制代码
Hello, this is a headless Qt application running on Linux.
Running task 0
Running task 1
Running task 2
Running task 3
Running task 4
  1. 如何在终端中运行
    构建项目后,你会在 build 目录下找到可执行文件(通常是 项目名)。
    在终端中切换到该目录,然后运行你的程序:
    bash
    复制代码
    ./your_project_name
    输出将类似于:
cpp 复制代码
Hello, this is a headless Qt application running on Linux.
Running task 0
Running task 1
Running task 2
Running task 3
Running task 4
  1. 如何调试和日志输出
    如果你想查看更多的调试信息,可以在代码中增加更多的 qDebug() 语句,或者使用 qWarning()、qCritical() 等 Qt 提供的日志输出函数。
cpp 复制代码
qWarning() << "This is a warning message.";
qCritical() << "This is a critical message.";

如果程序没有图形界面,调试信息会直接输出到 Qt Creator 的调试输出窗口 或者你运行程序的终端窗口。

  1. 背景任务和定时器
    如果你希望程序在后台运行并定时执行任务,可以使用 QTimer 或 QThread 来管理后台任务。

示例:使用 QTimer 定时器

cpp 复制代码
#include <QCoreApplication>
#include <QDebug>
#include <QTimer>
#include <QDateTime>  // 添加这个头文件

void task() {
    qDebug() << "Task is running at" << QDateTime::currentDateTime().toString();
}

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    // 设置定时器,每隔 5 秒执行一次任务
    QTimer timer;
    QObject::connect(&timer, &QTimer::timeout, &task);
    timer.start(5000);  // 5000 毫秒(即 5 秒)

    // 开始事件循环
    return a.exec();
}

该示例使用 QTimer 每 5 秒执行一次任务。QTimer 通过信号和槽机制触发任务,类似于传统的定时器功能。

  1. 无界面程序的常见应用场景
    无界面程序常用于以下场景:

后台服务:例如守护进程(Daemon)或定时任务。

日志采集器:收集系统或应用程序的日志。

数据处理程序:例如自动化的数据分析、批处理任务等。

网络服务器:如一个简单的 TCP/UDP 服务器。

嵌入式系统开发:为没有图形界面的设备(如路由器、传感器等)编写程序。

  1. 部署和发布
    对于没有图形界面的程序,你的发布过程会更加简单,只需要将可执行文件传输到目标 Linux 系统,确保目标系统上安装了必要的 Qt 库(例如通过 apt install qt5-base 安装)。没有界面时,程序不需要 GUI 相关的库,因此依赖较少。

总结

通过 Qt Creator 创建一个 无界面程序 其实非常简单,你只需要使用 QCoreApplication 替代 QApplication,然后根据需要编写程序的逻辑。该程序可以在 Linux 环境中运行,并通过控制台输出日志或结果。你可以根据需要扩展任务逻辑,使用定时器或线程等功能来进行后台处理。

相关推荐
Lovyk13 分钟前
Linux 正则表达式
linux·运维
冒泡的肥皂1 小时前
MVCC初学demo(一
数据库·后端·mysql
Fireworkitte1 小时前
Ubuntu、CentOS、AlmaLinux 9.5的 rc.local实现 开机启动
linux·ubuntu·centos
sword devil9002 小时前
ubuntu常见问题汇总
linux·ubuntu
ac.char2 小时前
在CentOS系统中查询已删除但仍占用磁盘空间的文件
linux·运维·centos
.Shu.2 小时前
Redis Reactor 模型详解【基本架构、事件循环机制、结合源码详细追踪读写请求从客户端连接到命令执行的完整流程】
数据库·redis·架构
淮北也生橘123 小时前
Linux的ALSA音频框架学习笔记
linux·笔记·学习
薛晓刚5 小时前
当MySQL的int不够用了
数据库
SelectDB技术团队5 小时前
Apache Doris 在菜鸟的大规模湖仓业务场景落地实践
数据库·数据仓库·数据分析·apache doris·菜鸟技术
星空下的曙光6 小时前
mysql 命令语法操作篇 数据库约束有哪些 怎么使用
数据库·mysql