qpainter在qt的gui模块中,console在core模块中。因此建立的console模块默认是不能使用qpainter的,为了能使用qpainter,需要增加gui模块,即:
CONFIG += console gui
并且在main函数中添加
QGuiApplication a(argc, argv);
如果没有上面的这两部操作,使用qpainter会报错:
ASSERT failure in QGuiApplication::font(): "no QGuiApplication instance", file kernel\qguiapplication.cpp, line 2958
延伸内容:
1、QCoreApplication定义在core模块中,为应用程序提供了一个非gui的事件循环;QGuiApplication定义在gui模块中,提供了额外的gui相关的设置,比如桌面设置,风格,字体,调色板,剪切板,光标;QApplication定义在widgets模块中,是QWidget相关的,能设置双击间隔,按键间隔,拖拽距离和时间,滚轮滚动行数等,能获取桌面,激活的窗口,模式控件,弹跳控件等。如果你的应用程序是无界面的,直接使用QCoreApplication即可,如果是gui相关,但没有使用widgets模块的就使用QGuiApplication,否则使用QApplication。
继承关系:QApplication <- QGuiApplication <- QCoreApplication <- QObject