[英]QT: Scrolling 2 QPlainTextEdits at the same time
我想創建一個內部工具供2 QPlainTextEdits使用。 我想做一個功能,當我滾動一個文本時編輯另一個文本時也會滾動。 我試圖從http://doc.qt.io/qt-4.8/qt-widgets-codeeditor-example.html中找出問題,但它沒有按我預期的那樣工作
這是我的代碼:
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構造函數
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)));
}
當我執行代碼並滾動一個文本編輯時,第二個文本看起來像這樣(文本編輯具有相同的內容):
最簡單的方法是在“ sliderPosition屬性”的幫助下使QPlainTextEdit的垂直滾動條保持同步。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.