我不确定我在这里做错了什么,on_openButton_clicked
函数中的代码运行并按预期工作,现在我正在尝试使用类来处理所有内容并抛出以下错误:< / p>
C2064:术语不会评估为带有1个参数的函数。
mainwindow.cpp
#include "mainwindow.h"
#include "getfile.h"
#include <QFileDialog>
#include <QMessageBox>
#include <QTextStream>
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
}
MainWindow::~MainWindow()
{
delete ui;
}
void getFileInfo::setFileInfo(QString dir)
{
textFile = dir;
file(textFile);
if (!file.open(QIODevice::ReadOnly)){
return;
}
fileInfo(file);
fileStream(&file);
nameOfFile(fileInfo.fileName()), fileText = fileStream.readAll();
}
void MainWindow::on_openButton_clicked()
{
getFileInfo classFile;
QString textFile = QFileDialog::getOpenFileName(this, "Open Text Document", "C://", "*.txt");
classFile.setFileInfo(textFile);
// ui->labelFilePath->setText("File Path: " + file.fileName());
//ui->labelFileName->setText(nameOfFile);
//ui->textBox->setPlainText(fileText);
}
void MainWindow::on_saveButton_clicked()
{
QString fileDirectory = ui->labelFilePath->text(), textFile;
if (fileDirectory != "File Path: ")
textFile = QFileDialog::getSaveFileName(this, "Save Text Document", fileDirectory, "*.txt");
else
textFile = QFileDialog::getSaveFileName(this, "Save Text Document", "C://", "*.txt");
QFile file(textFile);
if(file.open(QIODevice::ReadWrite))
{
QTextStream fileStream(&file);
fileStream << ui->textBox->toPlainText() << endl << endl << endl << "Time Since Edit: ";
}
}
getfile.h
#ifndef GETFILE_H
#define GETFILE_H
#endif // GETFILE_H
#include <QFileDialog>
#include <QTextStream>
class getFileInfo
{
Q_OBJECT
public:
void setFileInfo(QString dir);
private:
QString textFile, nameOfFile, fileText;
QFile file;
QFileInfo fileInfo;
QTextStream fileStream;
};
mainwindow.cpp(使用类之前的早期工作版本)
#include "mainwindow.h"
#include <QFileDialog>
#include <QMessageBox>
#include <QTextStream>
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::on_openButton_clicked()
{
QString textFile = QFileDialog::getOpenFileName(this, "Open Text Document", "C://", "*.txt");
QFile file(textFile);
if (!file.open(QIODevice::ReadOnly)){
QMessageBox::information(this, "Error", "Could Not Open File\nOr\nNo File Selected");
return;
}
QFileInfo fileInfo(file);
QTextStream fileStream(&file);
QString nameOfFile(fileInfo.fileName()), fileText = fileStream.readAll();
ui->labelFilePath->setText("File Path: " + file.fileName());
ui->labelFileName->setText(nameOfFile);
ui->textBox->setPlainText(fileText);
}
void MainWindow::on_saveButton_clicked()
{
QString fileDirectory = ui->labelFilePath->text(), textFile;
if (fileDirectory != "File Path: ")
textFile = QFileDialog::getSaveFileName(this, "Save Text Document", fileDirectory, "*.txt");
else
textFile = QFileDialog::getSaveFileName(this, "Save Text Document", "C://", "*.txt");
QFile file(textFile);
if(file.open(QIODevice::ReadWrite))
{
QTextStream fileStream(&file);
fileStream << ui->textBox->toPlainText() << endl << endl << endl << "Time Since Edit: ";
}
}
答案 0 :(得分:0)
你在这些方面做什么?
file(textFile);
...
fileInfo(file);
...
fileStream(&file);
file(textFile)
中的要在operator()(const QString&)
对象上调用QFile
,但QFile
类没有该方法。与fileInfo(file)
和fileStream(&file)
相同,QFileInfo
没有operator()(const QFile&)
方法等。
所有对象file
,fileInfo
和fileStream
都是您的类的成员,因此它们是在getFileInfo
类的构造函数中创建的。构造完成后,您可以使用 setters 方法设置参数。所以请致电
file.setFileName(textFile);
fileInfo.setFile(file);
fileStream.setDevice(&file);