问题描述
- 关于Qt弹出的窗口闪退的问题
-
(:з」∠)本人新手,前两天刚刚接触了Qt,今天想试试能不能做出弹出窗口,很幸运,成功弹出窗口,不过不知道为啥窗口刚刚出现就消失了,,,有没有大神可以帮下忙呢~~~谢谢啦,第一次发帖。。。。
dialog.h文件:#ifndef DIALOG_H #define DIALOG_H #include <QDialog> #include<QLabel> namespace Ui { class Dialog; } class Dialog : public QDialog { Q_OBJECT public: explicit Dialog(QWidget *parent = 0); ~Dialog(); private: Ui::Dialog *ui; QLabel *label; }; #endif // DIALOG_H
mainwindow.h文件:
#ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> namespace Ui { class MainWindow; } class MainWindow : public QMainWindow { Q_OBJECT public: explicit MainWindow(QWidget *parent = 0); ~MainWindow(); private: Ui::MainWindow *ui; private slots: void push(); }; #endif // MAINWINDOW_H
main.cpp文件:
#include "mainwindow.h" #include <QApplication> #include "dialog.h" int main(int argc, char *argv[]) { QApplication a(argc, argv); MainWindow w; w.show(); return a.exec(); }
dialog.cpp文件:
#include "dialog.h" #include "ui_dialog.h" #include<QGridLayout> #include<windows.h> Dialog::Dialog(QWidget *parent) : QDialog(parent), ui(new Ui::Dialog) { ui->setupUi(this); label = new QLabel("label1"); QGridLayout *layout = new QGridLayout(this); // Sleep(5000); label->show(); // Sleep(5000); } Dialog::~Dialog() { // Sleep(5000); delete ui; }
mainwindow.cpp文件
#include "mainwindow.h" #include "ui_mainwindow.h" #include"dialog.h" #include<QPushButton> #include<windows.h> MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); connect(ui->button1,SIGNAL(clicked()),this,SLOT(push())); } MainWindow::~MainWindow() { delete ui; } int times=1; void MainWindow::push(){ for(long int i=0;i<times;i++) { QString temStr = ui->line->text(); times = temStr.toInt(); Dialog one; one.show(); } times = 1; }
自己做了两个UI文件,觉得和问题没有太大的关联。
解决方案
因为你的dialog是申请的栈空间,函数运行结束后内存释放,界面自然消失。
申请堆空间可以解决
解决方案二:
QT 弹出窗口
时间: 2024-09-10 11:56:34