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

ops/2024/11/14 9:01:15/
  1. 安装 Qt 和 Qt Creator
    确保你已经安装了 Qt 和 Qt Creator。如果没有,按以下步骤安装:
在 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,它不依赖图形界面,因此更适合做后台、服务类等无界面的任务。

示例代码:

修改 main.cpp 文件,使其成为一个无界面的程序:#include <QCoreApplication>
#include <QDebug>
#include <QDateTime>  // 添加这个头文件
int main(int argc, char *argv[])
{// 使用 QCoreApplication 而不是 QApplicationQCoreApplication 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)。此时,程序将运行,并且控制台中会显示输出内容:

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
    输出将类似于:
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 提供的日志输出函数。
qWarning() << "This is a warning message.";
qCritical() << "This is a critical message.";

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

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

示例:使用 QTimer 定时器

#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 环境中运行,并通过控制台输出日志或结果。你可以根据需要扩展任务逻辑,使用定时器或线程等功能来进行后台处理。


http://www.ppmy.cn/ops/132505.html

相关文章

Centos 7离线安装ntpd服务

本文涉及一次Centos 7系统中离线安装ntpd对时服务的过程&#xff0c;其目的是为了在服务器运行过程中能够实时同步时间。 问题提出 某服务器需部署业务程序&#xff0c;这些程序的部署脚本是我初创的&#xff0c;后因其它事转交给其他人&#xff0c;后再因其它事又兜兜转转到了…

ai辅助开发一个简单的在线购物网站

我们可以从一个具体的例子出发&#xff0c;假设我们要开发一个简单的在线购物网站&#xff0c;我们将从以下几个方面进行讨论&#xff1a; 1. 项目概述 项目名称&#xff1a;E-Commerce Web Application 主要功能&#xff1a; 用户注册和登录商品浏览和搜索购物车管理订单管…

六、鸿蒙开发-导航组件、定时器组件、动画

提示&#xff1a;本文根据b站尚硅谷2024最新鸿蒙开发HarmonyOS4.0鸿蒙NEXT星河版零基础教程课整理 链接指引 > 尚硅谷2024最新鸿蒙开发HarmonyOS4.0鸿蒙NEXT星河版零基础教程 文章目录 一、定时器1.1 参数1.2 事件 二、导航组件2.1 概述2.2 导航栏样式2.2.1 导航栏位置2.2.2…

51单片机 定时器详解

51单片机定时器详解 在 51 单片机中&#xff0c;定时器/计数器&#xff08;Timer/Counter&#xff09;是一个非常重要的功能模块&#xff0c;用于处理定时、计数和事件触发等任务。定时器可以在应用程序中产生周期性中断&#xff0c;常用于精确的时间延迟、事件计数等场合。本…

全面覆盖!终极comfyui工作流入门指南,一篇文章搞定搭建全过程!

前言&#xff1a; ComfyUI工作流&#xff0c;专为AI艺术创作设计&#xff0c;简化了图像生成流程。通过直观的节点系统&#xff0c;用户可轻松搭建个性化创作流程。部署ComfyUI&#xff0c;只需下载运行环境&#xff0c;安装依赖&#xff0c;启动服务&#xff0c;即可在浏览器…

js实现各种经典排序算法

在 JavaScript 中&#xff0c;可以实现多种经典的排序算法&#xff0c;包括冒泡排序、选择排序、插入排序、归并排序、快速排序等。以下是这些排序算法的实现代码和解释&#xff1a; 1. 冒泡排序&#xff08;Bubble Sort&#xff09; 冒泡排序是一种简单的排序算法&#xff0…

Unity——鼠标点击信息和当前位置获取

文章目录 前言一、应用场景二、实现方法1.获取鼠标在屏幕上的位置2.获取鼠标点击位置的世界坐标3.获取鼠标点击位置的UI元素总结前言 在Unity开发中,有时会需要我们获取一些鼠标的信息用于数据交互或者角色控制。 一、应用场景 交互式UI 按钮点击:检测用户是否点击了UI按钮,…

Java Stream 流常用操作大全

文章目录 1. 逗号分隔的字符串转 List&#xff08;1&#xff09;转 List<String>&#xff08;2&#xff09;转 List<Long> 2. map 元素映射3. filter 元素过滤4. findFirst 查找首个元素&#xff08;1&#xff09;查找 filter 过滤后的首个元素 5. groupingBy 分组…