В примере средства просмотра изображений объекты QPainter и QPrintDialog определены и используются следующим образом:
#ifndef QT_NO_PRINTER
QPrinter printer;
#endif
и
QPrintDialog dialog(&printer, this);
Объект QPainter затем инициализируется с помощью QPrinter (принтера).
Когда я пытался использовать тот же код в своей функции, он выглядел следующим образом:
void imageviewer::print()
{
...
#ifdef QT_NO_PRINTER
QPrinter printer(this); //ERROR 1
QPrintDialog dialog(&printer, this);//ERROR 2 and 3
if (dialog.exec()) //ERROR 4
{
//do the painting
}
#endif
}
Ошибки:
1. variable 'QPrinter printer' has initializer but incomplete type
2. 'QPrintDialog' was not declared in this scope
3. Expected ';' before 'dialog'
4. 'dialog' was not declared in this scope
Я не могу понять, почему эти ошибки возникают, когда я использую их в своем коде, а не в примере.
Как отметил мой друг, я убедился, что использовал правильные файлы #include, и убедился, что «принтер» и «диалоговое окно» не затрагивались нигде в этом примере.