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



请将我视为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

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

我错过什么了吗?我该如何解决这个问题?和缓存有关吗?请建议。

小心混合源内构建和"影子构建"。如果您进入源目录,并运行qmakemake,您将获得源内构建。另一方面,Qt Creator默认使用单独的构建目录,也就是"影子构建",当然你也可以自己这么做。在实践中,这是通过qmake创建构建目录为源目录的兄弟来完成的,到那里并执行qmake ../myproject在影子构建目录中生成makefile。

现在的问题是,make程序并没有真正的独立构建目录的概念,如果您已经执行了源内构建,那么这些构建文件也可以被make访问。然后,当你认为你在做影子构建时,make在源目录下找到那些构建的文件,并使用它们而不是创建新的文件。

如果是这个问题,下面的应该有所帮助:

在Qt SDK命令提示符下转到源代码目录,并运行

make clean distclean

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

如果您使用版本控制(并且没有意外签入生成的文件…),则可以使用版本控制工具从版本控制目录中删除所有额外的文件。

请重新检查您的环境:您真的清除了所有吗?确保没有以前版本中的*.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#separator和http://qt-project.org/doc/qt-4.8/qdir.html#toNativeSeparators) -如果您编写跨平台软件

相关内容

  • 没有找到相关文章

最新更新