【发布时间】:2017-04-24 09:52:17
【问题描述】:
当我点击一个按钮时,我需要打开一个新的 QMainWindow。我会理解为什么它可以与指针一起使用而不能与引用一起使用:
触发新窗口的槽如下,它应该打开两个窗口,但只显示使用新操作符创建的窗口:
MyWin win1(this);
win1.show();
MyWin *win2 = new MyWin(this);
win2->show();
以下是 MyWin.h 和 MyWin.ccp
#ifndef MyWin_H
#define MyWin_H
#include <QMainWindow>
namespace Ui {
class FrmManipolo1;
}
Class MyWin : public QMainWindow
Q_OBJECT
public:
explicit MyWin(QMainWindow *parent = 0);
~MyWin();
private:
Ui::MyWin *ui;
};
#endif
MyWin.cpp
include "MyWin.h"
include "ui_MyWin.h"
MyWin::MyWin(QMainWindow *parent) :
QMainWindow(parent),
ui(new Ui::MyWin)
{
ui->setupUi(this);
}
MyWin::~MyWin()
{
delete ui;
}
【问题讨论】:
-
所以你试图打开一个你没有创建/实例化的窗口 (
new) 你想知道为什么?顺便说一句,指针是引用。 -
为什么我没有得到空指针异常?我认为使用第一个符号会自动创建一个对象。所以没有使用 MyWin win1(this); 创建对象?我想这两种方法都应该起作用,但是第一个方法将对象放入堆栈中,而后者则放入堆中
-
它被创建,但是当
win1变量超出范围时它被销毁。