为什么给QString赋值出错

Why there is error in assigning values to QString

我想访问从 Dialog WindowMain Window 的 Qstring (m_IPAdd)。但是,我坚持在 setter 函数中传递 Qstring 值。

我的错误在调试模式下显示为弹出窗口 window:

unhandled exception occurs at 0x66a77448 (Qt5Cored.dll) in __.exe:0xC0000005: 
conflict happend when accessing the memory at 0xffffffffffffffff"

(我正在使用 MSVC2010 和 Qt5.0。)

对话框Window:

private:
MainWindow *mainwindow;

...

mainwindow->setIPAdd(m_IPAdd);     //m_IPAdd: member variable of class DialogWindow

主要Window:

private:    
QString m_ip;

...

void MainWindow::setIPAdd(const QString ip)
{
    m_ip = 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";

但是程序也失败了。

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

请给我任何指导和建议。非常感谢!!

由于Dialog Window继承自QWidget,它本身就是一个widget。所以...你可以在上面定义你自己的 Q_PROPERTY 来代表你想要分享的价值,然后注册那个 属性。这样就可以从您的主窗口访问它了。

  1. 您没有提供足够的信息。我怀疑您的指针无效或 main window 在收到结果之前被销毁了。
  2. 你做错了。你有 Qt,所以使用信号和插槽在对话框和主程序之间传递值 window。正确编写的对话框应该是一个封闭的框,它不知道周围的环境或创建它的人,但你给了它一个指向 main window 的指针。