我有一个用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中检查了相同的代码,它没有问题。
我的系统:
答案 0 :(得分:1)
您显示的代码没有任何严重错误,除了您要将const 引用传递给字符串,但这不是问题的原因。 Settings
构造函数应具有以下签名:
Settings::Settings(const QString & file, QObject * parent)
您应该在项目上重新运行qmake,清理并重建它,然后重试。如果它仍然不起作用,那么你有一个内存错误,平台的更改只会在代码中暴露出一个潜在的错误。