簡體   English   中英

QT:同時滾動2個QPlainTextEdits

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM