調用構造函數之外新的運營商時,我有一個關於一個奇怪的問題(至少是出乎意料的對我來說)行爲(它崩潰)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