我有一个用 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 中检查了相同的代码,它没有问题。
我的系统:
- 优宾图 13.10 64 位
- 海湾合作委员会 4.8.1
- Qt 5.2.2 (git)
最佳答案
您显示的代码没有什么严重错误,只是您想将 const reference 传递给字符串,但这不是问题的原因。 Settings
构造函数应具有以下签名:
Settings::Settings(const QString & file, QObject * parent)
你应该在项目上重新运行 qmake,清理并重建它,然后再试一次。如果它仍然不起作用,那么你有一个内存错误,平台的变化只会暴露你代码中的一个潜在错误。
关于c++ - QString 在传递给函数时清空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21567612/