Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何知道特定的打印机错误以及如何处理这些错误?_C++_Qt - Fatal编程技术网

C++ 如何知道特定的打印机错误以及如何处理这些错误?

C++ 如何知道特定的打印机错误以及如何处理这些错误?,c++,qt,C++,Qt,我正在做一个简单的项目,我想知道可用的打印机,然后连接到其中一个,看看是否有错误。 为了知道可用的打印机名称,我使用了QPrinterInfo类,然后为了使用其中一个可用的打印机,我使用“printer.setPrinterName(“所需的打印机名称”)”设置其名称。 为了知道是否有一些与此打印机相关的错误(以所需的打印机名称命名),我搜索并发现我必须使用QPrinter::Error,然后处理这些错误。 我的问题是,在if语句(在下面的代码中)中使用QPrinter::error时会发生什么

我正在做一个简单的项目,我想知道可用的打印机,然后连接到其中一个,看看是否有错误。 为了知道可用的打印机名称,我使用了QPrinterInfo类,然后为了使用其中一个可用的打印机,我使用“printer.setPrinterName(“所需的打印机名称”)”设置其名称。 为了知道是否有一些与此打印机相关的错误(以所需的打印机名称命名),我搜索并发现我必须使用QPrinter::Error,然后处理这些错误。 我的问题是,在if语句(在下面的代码中)中使用QPrinter::error时会发生什么类型的错误?如果打印机内没有纸张,使用QPrinter::Error会引发错误吗?一般来说,我如何知道我可以处理哪些类型的错误以及如何处理它们

代码:

mainwindow.h:

#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();
  }