繁体   English   中英

QPainter设备返回的引擎== 0,键入:3(在重新定义的paint()方法中)

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM