проблему решил
if(QPrinterInfo::availablePrinterNames().size() < 1)
{
QMessageBox::critical(this, tr("Print error"), tr("There is no available printer"));
}
else
{
QPrintDialog preview(&printer, this);
connect(&preview, SIGNAL(accepted(QPrinter *)), SLOT(printReport(QPrinter *)));
preview.exec();
}
Странно, когда нет принтеров, QPrintDialog не вызывается с 1 принтером "Add printer". На qt.io объяснили, что Qt кроссплатформенный и на разных осях разные способы добавления принтера. Ну да ладно.... согласен, пусть будет это забота программиста - перед вызовом проверить наличие принтера. Решил посмотреть в демках, как авторы это делают. Запустил пример TextEdit из QtDemo. Жму принт... кнопка нажалась и никакой реакции. Как так? Как минимум бы конпку задизейблить....