我正在尝试创建一个 QLine 类型的简单 QT QList,但每次在 Windows 上编译和运行它时都会出现异常:
代码在一个QGraphicsScene的drawBackground函数中,构造如下:
GraphicsScene::GraphicsScene(QGraphicsScene *parent) : QGraphicsScene(parent) {
}
Main code:
void GraphicsScene::drawBackground(QPainter *painter, const QRectF& rect) {
QGraphicsScene::drawBackground(painter, rect);
try {
QList<QLine> lines;
QLine line_that_crashes = QLine(0, 0, 100, 100);
lines.append(line_that_crashes);
}
catch (const std::exception& e) {
std::cout << "I caught : " << e.what ();
}
catch (...) {
std::cout << "Unknown exception";
}
}
如您所见,我尝试将调用包装在 try/catch 中,但它仍然生成异常。
根据我的经验,此类错误通常是由“数组越界”或“空指针”引起的。当你尝试调试它时,调试器经常在最深处中断,但这并不意味着Qt库函数有bug(概率很低)。您需要检查函数调用堆栈并查看谁在调用
GraphicsScene::drawBackground
,直到到达您编写的代码部分,因为错误通常就在那里。