C++ 为什么给QString赋值时出错

C++ 为什么给QString赋值时出错,c++,qt,setter,qstring,C++,Qt,Setter,Qstring,我想从对话框窗口到主窗口访问Qstring(m_IPAdd)。但是,我在setter函数中传递Qstring值时遇到了困难 调试模式下,“我的错误”显示为弹出窗口: unhandled exception occurs at 0x66a77448 (Qt5Cored.dll) in __.exe:0xC0000005: conflict happend when accessing the memory at 0xffffffffffffffff" (我将MSVC2010与Qt5.0一起使用

我想从
对话框窗口
主窗口
访问Qstring(m_IPAdd)。但是,我在setter函数中传递Qstring值时遇到了困难

调试模式下,“我的错误”显示为弹出窗口:

unhandled exception occurs at 0x66a77448 (Qt5Cored.dll) in __.exe:0xC0000005: 
conflict happend when accessing the memory at 0xffffffffffffffff"
(我将MSVC2010与Qt5.0一起使用。)

对话框窗口:

private:
MainWindow *mainwindow;
private:    
QString m_ip;

主窗口:

private:
MainWindow *mainwindow;
private:    
QString m_ip;

我也试过了

void MainWindow::setIPAdd(const QString ip)
{
    QString ipadd = ip;        //ipadd: local variable which it can get the value of Qstring (in Debug mode) 
    m_ip = ipadd ;             //here's the program crashes, m_ip can't get any value
}
我想知道为什么局部变量
ipadd
可以获得通过参数
ip
传递的值,而不是
m_ip
。我甚至试过分配

m_ip = "abc";
但该计划也失败了

我已经阅读了QtWeb中的文档,但仍然不知道哪个部分对我有用


请给我一些指导和建议。非常感谢

对话框窗口继承自QWidget,它本身就是一个小部件。所以您可以在其上定义自己的Q_属性来表示您想要共享的值,并注册该属性。这样就可以从主窗口访问它

  • 你没有提供足够的信息。我怀疑您的指针无效或主窗口在收到结果之前被破坏
  • 你做错了。您有Qt,所以使用信号和插槽在对话框和主窗口之间传递值。正确编写的对话框应该是一个封闭的框,它不知道周围的环境或是谁创建的,但您给它一个指向主窗口的指针
    你有什么错误。包含m_ip的对象是否正确实例化?调试器怎么说?我猜
    MainWindow
    实例已经不存在了。我打赌指向
    MainWindow
    (又称
    MainWindow
    )的指针已经不存在了initialized@MarkoFrelih,@cmannett85:谢谢,更新了错误@鲍里斯本:你的意思是在对话框窗口的构造函数中初始化指向主窗口的指针吗@这是否意味着我需要新建一个QString对象?