C++ 如何知道特定的打印机错误以及如何处理这些错误?
我正在做一个简单的项目,我想知道可用的打印机,然后连接到其中一个,看看是否有错误。 为了知道可用的打印机名称,我使用了QPrinterInfo类,然后为了使用其中一个可用的打印机,我使用“printer.setPrinterName(“所需的打印机名称”)”设置其名称。 为了知道是否有一些与此打印机相关的错误(以所需的打印机名称命名),我搜索并发现我必须使用QPrinter::Error,然后处理这些错误。 我的问题是,在if语句(在下面的代码中)中使用QPrinter::error时会发生什么类型的错误?如果打印机内没有纸张,使用QPrinter::Error会引发错误吗?一般来说,我如何知道我可以处理哪些类型的错误以及如何处理它们 代码: mainwindow.h:C++ 如何知道特定的打印机错误以及如何处理这些错误?,c++,qt,C++,Qt,我正在做一个简单的项目,我想知道可用的打印机,然后连接到其中一个,看看是否有错误。 为了知道可用的打印机名称,我使用了QPrinterInfo类,然后为了使用其中一个可用的打印机,我使用“printer.setPrinterName(“所需的打印机名称”)”设置其名称。 为了知道是否有一些与此打印机相关的错误(以所需的打印机名称命名),我搜索并发现我必须使用QPrinter::Error,然后处理这些错误。 我的问题是,在if语句(在下面的代码中)中使用QPrinter::error时会发生什么
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QtPrintSupport/QPrinter>
#include <QtPrintSupport/QPrinterInfo>
#include <QtPrintSupport/QPrintDialog>
#include <QList>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = nullptr);
~MainWindow();
QPrinter printer;
private:
Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H
\ifndef主窗口
#定义主窗口
#包括
#包括
#包括
#包括
#包括
名称空间用户界面{
类主窗口;
}
类主窗口:公共QMainWindow
{
Q_对象
公众:
显式主窗口(QWidget*parent=nullptr);
~main窗口();
打印机;
私人:
Ui::MainWindow*Ui;
};
#endif//main窗口
mainwindow.cpp:
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDebug>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
QPrinterInfo PrinterInfo;
qDebug() << QStringList(QPrinterInfo::availablePrinterNames());
if (QPrinterInfo::availablePrinterNames().isEmpty())
{
qDebug() << " printer not found ";
}
printer.setPrinterName("desired printer name");
if (printer.printerState() == QPrinter::Error)
{
qDebug() << "there is an error";
}
}
MainWindow::~MainWindow()
{
delete ui;
}
#包括“mainwindow.h”
#包括“ui_main window.h”
#包括
主窗口::主窗口(QWidget*父窗口):
QMainWindow(父级),
用户界面(新用户界面::主窗口)
{
用户界面->设置用户界面(此);
QPrinterInfo PrinterInfo;
qDebug()以下是我在基于CUPS的Linux中使用QPrinter的经验。因此,如果您计划在Windows上使用它,这可能与我的经验完全不同。但我认为Linux中的错误检查包含很多不确定因素
我使用HP 107w尝试了QPrinter::printerState(),即使打印机未插入,它也总是返回空闲状态。施乐工作中心3025也出现了同样的情况。因此我建议您不要依赖QPrinter::printerState。文档中还说明
返回打印机的当前状态。这可能并不总是准确的(例如,如果打印机无法向操作系统报告其状态)
我正在打印到via。只有在操作系统启动时打印机未连接时才会失败。但一旦启动后打印机可用,它的行为就好像一切都会永远正常。它只是排队打印,当打印机可用时,厌倦了纸张,只打印它以前收到的所有内容。我认为的返回值为g请放置一个位置来检查是否没有纸张,并要求用户插入纸张以继续。但不,它也不会返回false。非常感谢
#include "mainwindow.h"
include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}