Qt调用Dialog窗口的exec崩溃问题处理
- 问题描述:做的界面Qt程序在调用dialog.exec()的地方崩溃,不清楚原因。
- 我的代码定义
class DialogFindTrainNo : public QDialog
{
Q_OBJECT
public:
explicit DialogFindTrainNo(QWidget *parent = 0);
~DialogFindTrainNo();
public:
bool m_bEnter;
QString m_QstrTrainNo;
void SetText(QString strText);
private slots:
void on_pushButton_2_clicked();
void on_pushButton_clicked();
private:
Ui::DialogFindTrainNo *ui;
};
Dialog类的调用部分代码
DialogFindTrainNo *m_GetTrainDlg;
m_GetTrainDlg = new DialogFindTrainNo(parent);
m_GetTrainDlg->SetText("");
m_GetTrainDlg->hide();
m_GetTrainDlg->setGeometry(0,100,520,210);
m_GetTrainDlg->exec();
QString QstrGet = m_GetTrainDlg->m_QstrTrainNo;
-
我需要把Dialog里面的变量m_QstrTrainNo取出来,进行查询。测试结果就是会崩溃在exec()的位置。
-
经过长时间的查找,并不是崩溃在exec()位置,而且崩溃在QstrGet赋值的语句。从Dialog里面取Qstring就大概率崩溃,取m_bEnter却不会有问题。
-
**问题解决:**定义一个全局变量QString把Dialog的输入存储为全局变量。
-
但是为什么这样取字符串会有问题,和QString的定义就有关系了,也许exec之后,内部的QString就被释放了。