Ich möchte ein internes Tool für meine Verwendung mit 2 QPlainTextEdits erstellen. Ich möchte eine Funktionalität machen, dass, wenn ich einen Text blättern kann, der andere auch gescrollt wird. Ich habe versucht, etwas von http://doc.qt.io/qt-4.8/qt-widgets-codeeditor-example.html, um herauszufinden, aber es funktioniert nicht, wie ichQT: Scrollen 2 QPlainTextEdits zur gleichen Zeit
erwartetHier ist mein Code:
CustomEdit.h
#ifndef CUSTOMEDIT_H
#define CUSTOMEDIT_H
#include <QPlainTextEdit>
class CustomEdit : public QPlainTextEdit
{
Q_OBJECT
public:
CustomEdit(QWidget *parent = 0);
public slots:
void updatePosition(const QRect &, int);
};
#endif // CUSTOMEDIT_H
CustomEdit.cpp
#include "customedit.h"
CustomEdit::CustomEdit(QWidget *parent) : QPlainTextEdit(parent)
{
}
void CustomEdit::updatePosition(const QRect &rect, int position) {
if (position) {
this->scroll(0, position);
this->update(0, rect.y(), this->width(), rect.height());
}
else {
this->update(0, rect.y(), this->width(), rect.height());
}
}
Mainwindow Erbauer
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
printoutAnalyzer = new PrintoutAnalyzer();
ui->Log->setReadOnly(true);
ui->Progress->reset();
resultEdit = new CustomEdit(this);
printoutEdit = new CustomEdit(this);
resultEdit->setReadOnly(true);
printoutEdit->setReadOnly(true);
ui->horizontalLayout->addWidget(printoutEdit);
ui->horizontalLayout->addWidget(resultEdit);
connect(printoutAnalyzer, SIGNAL(writeToLog(QString)), this, SLOT(putLogText(QString)));
connect(printoutAnalyzer, SIGNAL(writeToResult(QString)), this, SLOT(putResultText(QString)));
connect(printoutAnalyzer, SIGNAL(setProgress(int)), this, SLOT(setProgress(int)));
connect(ui->LoadPrintout, SIGNAL(triggered()), this, SLOT(choosePrintoutFile()));
connect(printoutEdit, SIGNAL(updateRequest(QRect, int)), resultEdit, SLOT(updatePosition(QRect, int)));
connect(resultEdit, SIGNAL(updateRequest(QRect, int)), printoutEdit, SLOT(updatePosition(QRect, int)));
}
Wenn ich führen Sie den Code und blättern Sie einen Text der zweite sieht wie folgt aus (Textänderungen haben den gleichen Inhalt) bearbeiten:
Haben Sie versucht, die verticalScrollBars aus beiden Textänderungen mit valueChanged/setValue zu verbinden? – Lifeisabug