QMainWindow在show()之后立即关闭

时间:2016-04-29 17:58:23

标签: c++ qt qt5

我是Qt的新手(主要使用Objective-C)所以我可能会遇到noob问题。在QDialog窗口中,我尝试打开QMainWindow,如下所示:

this->close();
SQLWindow window;
window.receivePath(path); //Path for the .sqlite file
window.show()

QDialog关闭,毫秒我看到了一个新窗口的一瞥,但它也关闭了。以下是QMainWindow部分:

SQLWindow::SQLWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::SQLWindow) 
{ 
    ui->setupUi(this); 
    this->initialSetup(); 
} 

SQLWindow::~SQLWindow() 
{ 
    delete ui; 
} 

void SQLWindow::initialSetup() 
{ 
    ui->tableView->setSortingEnabled(true); 
    ui->tableView->setEditTriggers(QAbstractItemView::NoEditTriggers); 
} 

void SQLWindow::receivePath(QString path) 
{ 
   this->openDatabase(path); 
} 

void SQLWindow::openDatabase(QString path) 
{
    //Opening database just fine
}

1 个答案:

答案 0 :(得分:2)

您的窗口是一个局部变量,它在函数末尾被销毁,因此析构函数将其关闭。 您可以做的是使用SQLWindow在堆上创建new SQLWindow,例如使用显示hereQt::WA_DeleteOnClose属性。

或者,更好的设计可能是创建对话框和窗口作为main函数的局部变量,让主函数从对话框传递路径到SQLWindow,然后你不需要new