QT C2064,在使用我的类变量时遇到问题,但它在类

时间:2018-04-03 04:05:20

标签: c++ qt

我不确定我在这里做错了什么,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: ";
    }
}

1 个答案:

答案 0 :(得分:0)

你在这些方面做什么?

file(textFile);
...
fileInfo(file);
...
fileStream(&file);
file(textFile)中的

要在operator()(const QString&)对象上调用QFile,但QFile类没有该方法。与fileInfo(file)fileStream(&file)相同,QFileInfo没有operator()(const QFile&)方法等。

所有对象filefileInfofileStream都是您的类的成员,因此它们是在getFileInfo类的构造函数中创建的。构造完成后,您可以使用 setters 方法设置参数。所以请致电

file.setFileName(textFile);
fileInfo.setFile(file);
fileStream.setDevice(&file);