QT使用C ++:如何实现另存为

时间:2016-08-21 02:34:20

标签: c++ qt

我试图将一个另存为功能添加到我使用C ++和QT制作的简单文本编辑器中。我在保存文件时尝试关闭当前选项卡,并打开一个具有相同索引的新选项卡,并将新文件的名称作为选项卡标题。这是我的代码:

QString fileName = QFileDialog::getSaveFileName(this, tr("Save As"), "", tr("All Files (*)"));
if (fileName.isEmpty())
        return;
else
{
    QFile file(fileName);
    if (!file.open(QIODevice::WriteOnly))
    {
        QMessageBox::information(this, tr("Unable to open file"),
        file.errorString());
        return;
    }
    QTextStream out (&file);`

    out << ui->plainTextEdit->toPlainText();


    QFileInfo FileData(file);

    int currentTab = ui->tabWidget->currentIndex();
    ui->tabWidget->removeTab(currentTab);
    QTextStream InputData(&file);
    ui->tabWidget->insertTab(currentTab, new Form(), FileData.fileName());
    ui->tabWidget->setCurrentIndex(currentTab);
    ui->plainTextEdit->setPlainText(InputData.readAll());

    file.flush();
    file.close();
}

当我尝试保存新文件时,它会将文件保存到所选位置并用文件名替换当前选项卡,但它不会将文件写入文本窗口。任何帮助都会很棒。

1 个答案:

答案 0 :(得分:0)

这是我的演示代码,似乎有效:

form.cpp,它有一个plainTextEdit

print('Prediction:', clf.predict(digits.data[-1]))

包含QTabWidget的mainwindow.cpp

#include "form.h"
#include "ui_form.h"

Form::Form(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Form)
{
    ui->setupUi(this);
}

Form::~Form()
{
    delete ui;
}

QString Form::GetText()
{
    return ui->plainTextEdit->toPlainText();
}

void Form::SetText(QString text)
{
    ui->plainTextEdit->setPlainText(text);
}

这对我有用,请试试。 谢谢。