【问题标题】:Why there is error in assigning values to QString为什么给 QString 赋值会出错
【发布时间】:2015-07-15 06:38:20
【问题描述】:

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

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

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

(我正在使用带有 Qt5.0 的 MSVC2010。)

对话窗口:

private:
MainWindow *mainwindow;

...

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

主窗口:

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 中的文档,但仍然不知道哪一部分对我有用。

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

【问题讨论】:

  • 你得到什么错误?
  • 1.包含 m_ip 的对象是否已正确实例化?
  • 你的调试器说什么?我猜MainWindow 实例已经不存在了。
  • 打赌指向MainWindow(又名mainwindow)的指针未初始化
  • @MarkoFrelih, @cmannett85 :谢谢,更新了错误。 @borisbn:您的意思是在Dialog Window 的构造函数中初始化指向MainWindow 的指针吗? @AlexanderVX:这是否意味着我需要新建一个 QString 对象?

标签: c++ qt setter qstring


【解决方案1】:

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

【讨论】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-17
      • 1970-01-01
      • 1970-01-01
      • 2018-01-02
      • 1970-01-01
      • 2017-06-12
      相关资源
      最近更新 更多