重建Qt应用程序不会更改字符串

时间:2013-03-19 09:43:46

标签: qt qt5

请认为我是Qt的新鲜事。我为按钮点击事件编写了以下代码。

void dbCheck ()
{
    db = QSqlDatabase::addDatabase("QSQLITE");

    QString dbPath(QDir::home().path());

    dbPath.append("/Desktop/jk/sample.sqlite");
    qDebug () <<"Path Name is "<<dbPath;
    .......
}

过了一段时间,我将以下一行改为

dbPath.append("/Desktop/jk/Newsample.sqlite");

当我运行代码时,它仍会打印上一条路径,即sample.sqlite

我清理了项目,重建了同样但没有用,但我得到了相同的结果。真的很奇怪。

我在这里错过了什么吗?我该如何纠正这个问题?与缓存有关的任何事情?请建议。

2 个答案:

答案 0 :(得分:1)

注意混合源内构建和“影子构建”。如果您转到源目录,则会获得源代码内部版本,并运行qmakemake。另一方面,Qt Creator默认使用单独的构建目录,AKA“影子构建”,你当然也可以自己做。在实践中,这是通过创建构建目录作为源目录的兄弟来完成的qmake,然后执行qmake ../myproject以在阴影构建目录中生成makefile。

现在的问题是, make 程序并没有真正具有单独构建目录的概念,如果您已经执行了源代码构建,那么 make < make < / em>也是。然后,当您认为正在进行阴影构建时, make 会在源目录下找到这些构建的文件并使用它们而不是创建新文件。

如果出现问题,以下应该有帮助

在Qt SDK命令提示符下转到源目录,然后运行

make clean distclean

注意:顺序很重要,distclean也会删除任何makefile,所以必须在最后完成。同时将make替换为nmakemingw32-make或您实际使用的任何内容。如果该命令没有找到makefile,那么你可能没有在那里运行qmake而问题是其他问题,但你可以通过运行qmake生成makefile来验证这一点,并make clean distclean会工作的。

删除额外文件的替代方法,如果您使用版本控制(并且没有意外检入生成的文件...),则使用版本控制工具从版本控制目录中删除所有额外文件。

答案 1 :(得分:0)

请重新检查一下你的环境:你真的清除了所有环境吗?确保您之前的版本中没有*.omoc_*.cppui_*.h。尝试删除.user文件并重新配置项目以使构建到不同的文件夹。

此外,您可以这样使用字符串的连接:

QString dbPath = QString("%1%2")
        .arg( QDir::home().path() )
        .arg( "/Desktop/jk/Newsample.sqlite" ) );

Offtop,但不要忘记原生分隔符http://qt-project.org/doc/qt-4.8/qdir.html#separatorhttp://qt-project.org/doc/qt-4.8/qdir.html#toNativeSeparators) - 如果您编写跨平台软件。