最初のMainWindowがメインで開き、2番目の ウィンドウを開こうとすると、SIGABRTでプログラムがクラッシュします。 デバッガは次の行を示しています。私は同じことを行う場合はQt :: WA_DeleteOnCloseは、プログラムの動作属性と 設定しない場合、デストラクタの後で新しいQMainWindowクラッシュを開く
double free or corruption (out): 0x00007fffffffe340 ***
RTTI symbol not found for class 'QObject'
RTTI symbol not found for class 'QObject'
RTTI symbol not found for class 'QObject'
RTTI symbol not found for class 'QObject'
RTTI symbol not found for class 'QObject'
RTTI symbol not found for class 'QObject'
RTTI symbol not found for class 'QObject'
私はデストラクタを呼び出すための正しい方法だかを理解したいと 2番目のウィンドウでは(IE iは2番目のQMainwindowの3番目のウィンドウを開きます)、プログラムはQt :: WA_DeleteOnClose属性を設定しても機能します。最初のQMainWindowでのみ行うことはできませんか?メイン? Qtので
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
this->setAttribute(Qt::WA_DeleteOnClose);
QTimer *t = new QTimer(this);
connect(t,SIGNAL(timeout()),this,SLOT(open_new()));
t->start(1000);
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::open_new(){
MainWindow2 *win_2 = new MainWindow2(0);
win_2->show();
this->close();
}
これを削除できます。 – Taz742
メイン()を表示してください。私は最初のMainWindowがスタック変数であると確信しています。 MainWindowが "new"演算子だけで作成されている場合、DeleteOnCloseを使うことができます。 – Matt
http://doc.qt.io/qt-5/qguiapplication.html#quitOnLastWindowClosed-prop –