Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 使用另一个类中的lineEdit中的路径创建文件_C++_Qt_Dialog_Signals Slots_Qlineedit - Fatal编程技术网

C++ 使用另一个类中的lineEdit中的路径创建文件

C++ 使用另一个类中的lineEdit中的路径创建文件,c++,qt,dialog,signals-slots,qlineedit,C++,Qt,Dialog,Signals Slots,Qlineedit,在我的项目中,我有一个MainWindow.cpp文件,其中包含新的Txt文件按钮。该按钮打开NewTxtFileName对话框,在该对话框中,我可以通过按create按钮创建一个新的text.txt文件 然后一个保存对话框打开,我可以选择目录和新文件的名称。完成后,文件的完整路径将打印在路径行编辑中,可用于打开第二个对话框。第二个对话框是WriteFileDialog,我可以在其中添加作者的姓名,单击“确定”即可写入文件 MainWindow类似乎没有使用lineEdit中的文件路径来调用Wr

在我的项目中,我有一个MainWindow.cpp文件,其中包含新的Txt文件按钮。该按钮打开NewTxtFileName对话框,在该对话框中,我可以通过按create按钮创建一个新的text.txt文件

然后一个保存对话框打开,我可以选择目录和新文件的名称。完成后,文件的完整路径将打印在路径行编辑中,可用于打开第二个对话框。第二个对话框是WriteFileDialog,我可以在其中添加作者的姓名,单击“确定”即可写入文件

MainWindow类似乎没有使用lineEdit中的文件路径来调用WriteFileDialog

如果我用QString TxtFile=QDir::homePath+QDir::separator+untitled.txt替换NewTxtFileName::getpath类中的TxtFile变量,则会打开第二个dilog,将文件和内容写入新位置

在路径行编辑中打印pe的文件路径非常重要。如何正确使用所需的文件位置和名称打开WriteFileDialog并保存它

MainWindow.cpp

NewTxtFileName.cpp

WriteFileDialog.cpp


这是因为您正在创建NewTxtFileName的新实例,而不设置路径

我不得不说,您的代码有点凌乱,我认为您应该重写信号和插槽工作流,不管怎样,如果总是在createTxtFileName之后调用writefile,那么只要注释这一行就可以了:


没错。在NewNewTextFileName窗口中,路径行为空,因此未创建任何文件。我没看到,谢谢。
void MainWindow::createTxtFileName()
{
    newtxtfilename = new NewTxtFileName(this);
    connect(newtxtfilename,SIGNAL(ready()),this,SLOT(writefile()));
    newtxtfilename->show();
    newtxtfilename->activateWindow();
}


void MainWindow::writefile()
{
    newfilename = new NewTxtFileName(this);
    QString fileName = newfilename->getpath();

    if (fileName.isEmpty()) return;

    newwritedialog = new WriteFileDialog(this,fileName);
    connect(newwritedialog,SIGNAL(opensignal()),this,SLOT(openfile()));
    newwritedialog->show();
    newwritedialog->activateWindow();

}
void NewTxtFileName::on_CreateFileButton_clicked()
{
    QString filePathName = QFileDialog::getSaveFileName(this, tr("File Name"),
            QDir::homePath()+QDir::separator()+"untitled.txt","txt Files (*.txt)");

    ui->Path->setText(filePathName);
    if (filePathName.isEmpty()) return;
}

QString NewTxtFileName::getpath()
{
    QString TxtFile= ui->Path->text();
    //QString TxtFile= QDir::homePath+QDir::separator()+"untitled.txt"
    QString path = TxtFile;
    return path;
}

void NewTxtFileName::on_OkButton_accepted() //15/5
{
    ready();
    close();
}
WriteFileDialog::WriteFileDialog(QWidget *parent,QString fileName) :
    QDialog(parent),
    ui(new Ui::WriteFileDialog)
{
    ui->setupUi(this);
    connect(ui->buttonBox,SIGNAL(accepted()),this,SLOT(create()));

    txtfileName = fileName;
    setWindowTitle(QFileInfo(fileName).fileName());

}

void WriteFileDialog::create() {

    QString fileText = "Author Name : ";
    QString fileText += ui->AuthorlineEdit->text();

    QFile file(txtfileName);
    if (!file.open(QIODevice::WriteOnly | QIODevice::Text))
    return;
    QTextStream textStream(&file);
    textStream.flush();
    textStream << fileText;
    file.close();

    emit opensignal(txtfileName);

}

WriteFileDialog::~WriteFileDialog()
{
    delete ui;
}
void MainWindow::writefile()
{
    //You are creating a new instance of the NewTxtFileName window where you never set the path
    //newfilename = new NewTxtFileName(this);
    QString fileName = newfilename->getpath();

    //also try using QDebug so that you know what fileName contains
    qDebug() << fileName;
    if (fileName.isEmpty()) return;

    newwritedialog = new WriteFileDialog(this,fileName);
    connect(newwritedialog,SIGNAL(opensignal()),this,SLOT(openfile()));
    newwritedialog->show();
    newwritedialog->activateWindow();

}