gpt4 book ai didi

c++ - 无法将QString转换为Const Char *

转载 作者:行者123 更新时间:2023-12-02 11:13:54 31 4
gpt4 key购买 nike

我是QT的新手,所以如果我在这里公然做错了事,请原谅,但是我看过这里所有与此有关的问题,但似乎找不到有效的方法。我正在尝试让用户通过输入名称来创建文件夹,然后使用该名称“创建”文件夹。我说“创建”是因为它并不是完全创建一个,而是在输入名称之前先创建一个名为“项目”的文件夹,然后在输入名称时将其重命名。但是,当我尝试使用输入的名称重命名文件夹时,它给了我

error:C2664: 'int rename(const char *,const char *)' : cannot convert argument 1 from 'QString' to 'const char *'



这是我的代码:
    void MainWindow::on_actionNew_Project_triggered(const char *parameter)
{
//Create project folder
QString projectPath = "D:/Project";

QDir dir(projectPath);
if (!dir.exists()) {
dir.mkpath(projectPath);
}


//Get project name from user
bool result;
QString name = QInputDialog::getText(0, "New Project",
"Enter in project name", QLineEdit::Normal,
"", &result);
if(result && !name.isEmpty()) {

//Rename project folder to user created name
QDir dir(projectPath);
if (dir.exists()) {
rename(projectPath, name); //Gives me error HERE

}
}
}

如果你们能提供帮助,我将不胜感激,我已经坚持了几个小时。

最佳答案

试试dir.rename(dir.dirName(), name);
您正在尝试在没有实例的情况下调用成员函数。

由于rename()QDir的成员函数,因此需要QDir实例才能调用它。因此,您不仅需要调用rename()来调用谁知道什么,还需要dir.rename()
QDir::rename()实际上将2 QString作为参数,但是您要调用的其他函数需要两个原始字符串,因此您实际上并不需要转换字符串,您只是在调用错误的函数。

bool QDir::rename(const QString & oldName, const QString & newName)

您很可能从 rename()调用 <stdio.h>,如果参数正确并且操作系统可以重命名目录,这也可以工作,在这种情况下,您需要通过 yourString.toLatin1().constData()转换为“原始” C样式字符串。但是,由于您使用的是Qt,因此不妨使用 QDir API,该API可直接与 QString一起使用。

如果仍然无法使用,则可能是您输入的参数错误,或者是由于某种原因导致操作系统无法重命名目录,例如当前正在使用的文件。

关于c++ - 无法将QString转换为Const Char *,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42882790/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com