qt问题,我想将我打开的文件内容放入到下一个ui的textedit中,这个要怎么才能实现

img


我想将我打开的文件内容放入到下一个ui的textedit中,这个要怎么才能实现

// studentdenglu.h

#ifndef STUDENTDENGLU_H
#define STUDENTDENGLU_H

#include <QWidget>
#include <QFileDialog>

QT_BEGIN_NAMESPACE
namespace Ui {
class studentdenglu;
}
QT_END_NAMESPACE

class studentdenglu : public QWidget
{
    Q_OBJECT

public:
    studentdenglu(QWidget *parent = nullptr);
    ~studentdenglu();

    QString getFileContent(const QString& filePath);

private slots:
    void on_pushButton_clicked();

private:
    Ui::studentdenglu *ui;
};

#endif // STUDENTDENGLU_H
// studentdenglu.cpp

#include "studentdenglu.h"
#include "ui_studentdenglu.h"
#include <QFile>
#include <QMessageBox>

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

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

QString studentdenglu::getFileContent(const QString& filePath)
{
    QFile file(filePath);
    if (!file.open(QIODevice::ReadOnly))
    {
        QMessageBox::critical(this, "Error", "Failed to open file");
        return "";
    }

    QByteArray content = file.readAll();
    file.close();

    return QString(content);
}

void studentdenglu::on_pushButton_clicked()
{
    QString filePath = QFileDialog::getOpenFileName(this, "打开文件", "C:\\study\\shixi\\stums 1\\message.txt.txt");
    QString fileContent = getFileContent(filePath);
    if (!fileContent.isEmpty())
    {
        // Assuming NextUI is the next UI class
        NextUI* nextUi = new NextUI(fileContent, this);
        nextUi->show();
    }
}
// NextUI.h

#ifndef NEXTUI_H
#define NEXTUI_H

#include <QWidget>
#include <QTextEdit>

class NextUI : public QWidget
{
    Q_OBJECT

public:
    explicit NextUI(const QString& fileContent, QWidget* parent = nullptr);

private:
    QTextEdit* textEdit;
};

#endif // NEXTUI_H
// NextUI.cpp

#include "nextui.h"

NextUI::NextUI(const QString& fileContent, QWidget* parent) : QWidget(parent)
{
    textEdit = new QTextEdit(this);
    textEdit->setPlainText(fileContent);
    // ... Set other properties and layouts for the TextEdit
}

可以把字符串传给下一个ui,让它自己加载
也可以把 textEdit 暴露成 public 的成员,你现在是 private 的,不能直接在前一个 ui 访问

  • 这篇博客: QT入门第一天平台使用规则和代码逻辑学习(初学者)中的 (5)文本编辑框 textEdit 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  •        作用:可以显示文本,也可以编辑
           方法:setText(你要显示的内容)
                     QString QTextEdit::toPlainText() const   //返回文本编辑框中所有的内容