QString在传递给函数时清空

时间:2014-02-05 02:38:28

标签: c++ qt ubuntu qstring

我有一个用QT编写的项目。 到目前为止,我在Windows中测试它没有问题。 今天我试着将它移植到Linux

我从qt.gitorius.org下载了Qt源代码树。目前它的版本为5.2.2。 它编译和安装没有问题。 程序也编译没有问题。 但跑步时出现问题。 调试时我发现了奇怪的行为。 代码很短:

Config::Config()
{
    p_path = QApplication::applicationDirPath();
    if(!p_path.endsWith(QDir::separator())) p_path += QDir::separator();
    QString path = p_path + "Settings/config.xml";
    settings = new Settings(path,this); // here path is /opt/myprog/Settings/config.xml
}
Settings::Settings(const QString file, QObject * parent) : QObject(parent)
{
    p_file = file; // file is empty here!!!!   
    p_initialized = false;
    p_autosave = true;
    p_changed = false;

}

当我将QString值传递给函数时,它会丢失它的值。

我在Windows中检查了相同的代码,它没有问题。

我的系统:

  • Ubintu 13.10 64 bit
  • Gcc 4.8.1
  • Qt 5.2.2(git)

1 个答案:

答案 0 :(得分:1)

您显示的代码没有任何严重错误,除了您要将const 引用传递给字符串,但这不是问题的原因。 Settings构造函数应具有以下签名:

Settings::Settings(const QString & file, QObject * parent)

您应该在项目上重新运行qmake,清理并重建它,然后重试。如果它仍然不起作用,那么你有一个内存错误,平台的更改只会在代码中暴露出一个潜在的错误。