调用构造函数之外新的运营商时,我有一个关于一个奇怪的问题(至少是出乎意料的对我来说)行为(它崩溃)QT的一个成员比类构造函数初始化不同指针时。我附上我的代码部分:崩溃QT
在mainwindow.h:
class MainWindow : public QMainWindow
{
...
private:
QPixmap *qpm_s1_yaw;
QPainter *s1_yaw_painter;
...
}
在mainwindow.cpp:
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
...
initGraph(qpm_s1_yaw, s1_yaw_painter, ui->YAW1);
...
}
void MainWindow::initGraph(QPixmap *map, QPainter *painter, QLabel *label)
{
map = new QPixmap(label->size());
map->fill(Qt::white);
painter = new QPainter(map);
... doing some stuff ...
label->setPixmap(*map); // ++(Remember this LINE)++
}
的实际工作,但是当我发表意见行:
label->setPixmap(*map)
,而是设置在像素图的构造(主窗口::主窗口)通过写
ui->YAW1->setPixmap(*qpm_s1_yaw)
我得到一个分段错误。
有人能解释什么是错呢?为了使工作我必须初始化所有的指针在构造函数(和评论在班组长成员initGraph那些线),像这样:
qpm_s1_yaw = new QPixmap(ui->YAW1->size());
s1_yaw_painter = new QPainter(qpm_s1_yaw);
initGraph(qpm_s1_yaw, s1_yaw_painter, ui->YAW1);
ui->YAW1->setPixmap(*qpm_s1_yaw);
感谢
至少,对于崩溃,您需要在程序中包含堆栈跟踪和所有相关变量的值。 – MrEricSir