c++system函数调用命令无效问题的解决办法(QT开发)

问题描述:在QT开发中,system函数失效,即使是普通的DOS命令,如 system("date"), 也无法顺利执行。头文件引用等一切正常。

解决办法:检查环境变量。在环境变量中检查PATH路径是否包含C:\Windows\system32(如下图所示)。如果没有C:\Windows\system32,则将C:\Windows\system32加入到PATH中。本方法仅限于windows 7。

 

激光打印机在Linux中可以使用CUPS(Common Unix Printing System)来管理打印机。CUPS提供了一组API来进行打印相关的操作,包括打印作业管理、打印队列管理、打印机管理等。Qt中可以通过调用CUPS提供的API来实现打印功能。 下面是一个简单的示例,使用Qt调用CUPS来打印PDF文件: ```c++ #include <cups/cups.h> void printPdfFile(QString filePath, QString printerName) { // 初始化CUPS cups_dest_t *dest = cupsGetDest(printerName.toUtf8().data(), NULL, 0, NULL); if (!dest) { qDebug() << "Failed to get printer destination"; return; } // 打开PDF文件 FILE *file = fopen(filePath.toUtf8().data(), "rb"); if (!file) { qDebug() << "Failed to open PDF file"; return; } // 创建打印作业 cups_job_t *job = cupsCreateJob(dest->printer, filePath.toUtf8().data(), 0, NULL); // 设置打印选项 cups_option_t *options = NULL; int numOptions = 0; cupsAddOption("media", "A4", &numOptions, &options); cupsAddOption("fit-to-page", "true", &numOptions, &options); // 开始打印 int numBytes = 0; char *buffer = NULL; while ((numBytes = fread(buffer, 1, 4096, file)) > 0) { if (cupsWriteRequestData(job->printer->http, buffer, numBytes) != numBytes) { qDebug() << "Failed to write print data"; cupsFreeOptions(numOptions, options); cupsCancelJob(dest->name, job->id); cupsFreeJob(job); fclose(file); return; } } // 完成打印 cupsFinishDocument(dest->printer->http); cupsFreeOptions(numOptions, options); fclose(file); cupsClose(dest->printer->http); cupsFreeDest(dest); } ``` 在上面的代码中,我使用了cupsGetDest()函数获取指定打印机的目标设备,然后使用cupsCreateJob()函数创建打印作业,并使用cupsAddOption()函数设置打印选项。最后,使用cupsWriteRequestData()函数将PDF文件的内容写入到打印作业中,并使用cupsFinishDocument()函数完成打印。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值