2017-06-02 46 views
0

我有一大块基于Qt的软件,可以在我们使用的所有现代机器上运行。我们试图运行旧机器上编译的软件,当我们尝试用以下一组错误的,以建立更大的场景软件崩溃:QPainter设备返回的引擎== 0,类型:3(在重新定义的paint()方法中)

error log figure

有在节目中唯一的一对地方的QPainter被使用,并且它是一个重新定义的方法继承的类的QStyledItemDelegatepaint()内,例如:

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的原因是什么?这是否与可用内存有关,因为它似乎在所有现代机器上都很好?有什么建议可以在这里完成?

回答

1

旧机器

+

软件崩溃,当我们试图建立更大的场面

=最有可能耗尽内存。你可以安装一个内存不足的处理程序,以便在发生这种情况时得到通知:

#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(); 
} 
+0

我会试试,谢谢! – vicrucann

相关问题