1

私の問題には最も簡単な説明があると確信していますが、私にはわかりません。テキストファイルをQTextEditに読み込もうとしていますが、このメソッドでQTextEditテキストを変更できないようで、理由がわかりません。

Document::Document(QWidget *parent) : QWidget(parent)
{
    this->layout = new QGridLayout(this);
    this->layout->setSpacing(2);
    this->layout->setMargin(0);
    this->setLayout(layout);
    this->textArea = new QTextEdit(this);
    this->textArea->setLineWrapMode(QTextEdit::NoWrap);
    this->textArea->setAcceptDrops(true);
    this->textArea->setAcceptRichText(true);
    this->textArea->setUndoRedoEnabled(true);
    this->textArea->setFont(QFont("Mono" , 11));
    this->layout->addWidget(textArea);
    this->textArea->show();
    this->textArea->setFocus();
    this->textArea->setText("Prueba de texto1");
}

void Document::open(QString archivo)
{
    std::cout << "Opening..................." << std::endl;
    this->textArea->setPlainText("Prueba de texto2");
    QFile file(archivo);
    QTextStream stream(&file);
    //this->textArea->append(stream.readAll());
    this->textArea->setText(stream.readAll());
    std::cout << "Opened" << std::endl;

}

コンストラクターで初めてSetTextを使用すると正常に機能しますが、開いた状態から呼び出すと機能しません。助けてください

4

2 に答える 2

3

オブジェクトを呼び出すopen()のを忘れましたQFile

    QFile file(archivo); 
    if (file.open(QFile::ReadOnly){
         QTextStream stream(&file);
         ...
    } else {
        /// Oops, no pude abrir el archivo para leer :(
    }
于 2012-04-23T18:38:54.460 に答える
0

試す

this->textArea->setPlainText(QString(stream.readAll());

または、ストリーム全体を次のように置き換えます。

QFile *file = new QFile(archivo);
this->textArea->setPlainText(QString(file->readAll()));
于 2012-04-23T16:03:15.627 に答える