我试图将一个另存为功能添加到我使用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();
}
当我尝试保存新文件时,它会将文件保存到所选位置并用文件名替换当前选项卡,但它不会将文件写入文本窗口。任何帮助都会很棒。
答案 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);
}
这对我有用,请试试。 谢谢。