[英]QPainter device returned engine == 0, type: 3 (in re-defined paint() method)
我有很多基于Qt的软件,可以在我们使用的所有现代计算机上正常运行。 我们尝试在较旧的计算机上运行编译的软件,当我们尝试构建具有以下错误集的大型场景时,该软件崩溃:
程序中仅使用QPainter
几个地方,并且在QStyledItemDelegate
的继承类的重新定义的方法paint()
内,例如:
virtual void paint(QPainter *painter,
const QStyleOptionViewItem &option,
const QModelIndex &index) const
{
QStyledItemDelegate::paint(painter, option, index);
// ...
QApplication::style()->drawControl(QStyle::CE_PushButtonLabel, &buttonDelete, painter);
}
问题是QPainter
出现此类问题的原因可能是什么? 可能与可用内存有关,因为在所有现代机器上似乎都还可以吗? 有什么建议可以在这里做什么?
旧机器
+
当我们尝试构建更大的场景时,软件崩溃
=最有可能是内存不足。 您可以安装内存不足处理程序,以在发生这种情况时得到通知:
#include <cstdio>
#include <new>
void my_new_handler()
{
printf("Memory allocation failed, terminating\n");
std::set_new_handler(nullptr);
}
int main(int argc, char ** argv)
{
QApplication app(argc, argv);
std::set_new_handler(my_new_handler);
...
return app.exec();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.