在圖像瀏覽器實例,QPainter的和QPrintDialog中對象定義和使用如下中的代碼示例未遇到錯誤:QPrinter來,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文件,並確保在該示例的其他地方沒有觸及'打印機'和'對話框'。
做到左右逢源使用#ifdef來和的#ifndef。在後一種情況下,即控制不進入#的if-else –
QT_NO_PRINTER是一個預處理指令。你需要從你的項目中刪除它。如果你的QT SDK已經與打印機支持一起編譯,你應該沒問題。否則,您將得到「QPrinter的未解析的外部符號」錯誤。如果您想打印,請先從您的項目中刪除此指令! –
刪除指令後,同樣的錯誤仍然存在。 –