如何使页面在 QTextEdit 或 QPlainTextEdit 中看起来

How to make pages look in QTextEdit or QPlainTextEdit

我正在尝试制作 QTextEdit 中的页面外观或使用它来这样做。

每页每页行数有限,每行字符数有限,首先是页面的外观。
所以我尝试使用此代码。

QVBoxLayout *layout =new QVBoxLayout();
ui->scrollArea->setLayout(layout);
ui->scrollArea->setWidgetResizable(true);

QTextEdit *edit = new QTextEdit("hello world");
edit->setSizePolicy(QSizePolicy::QSizePolicy::Preferred,QSizePolicy::Preferred);
QTextEdit *edit1 = new QTextEdit("hello world");
edit1->setSizePolicy(QSizePolicy::QSizePolicy::Preferred,QSizePolicy::Preferred);
QTextEdit *edit2 = new QTextEdit("hello world");
edit2->setSizePolicy(QSizePolicy::QSizePolicy::Preferred,QSizePolicy::Preferred);
// i added more
layout->addWidget(edit);
layout->addWidget(edit1);
layout->addWidget(edit2);

这个思路很简单就是用scrollbar container加垂直布局,每次需要页面的时候新建一个QTextEdit然后加到scrollbar的垂直布局中

这里的问题是,每当我添加一个新页面时,QTextEdit 我添加的太小了,滚动条永远不会在上面工作,所以 QTextEdit 会相互重叠,所以它看起来很糟糕。

所以我做错了什么导致滚动条不工作,以及如何使每个 QTextEdit 的页面看起来很好,大小合适,可以给我类似 Microsoft word 或 pdf 的外观有页面。

此外,如果有更好的想法或解决方案来解决我正在尝试做的事情,如果有一个已经实现的小部件或库有这个会更好。

您不必替换 QScrollArea 的现有布局,您要做的是创建一个小部件,并在该小部件中设置布局。在该小部件之后,您必须通过 setWidget() 方法将其放置在 QScrollArea 中,如果您希望显示的高度更大,请设置最小尺寸。

QWidget *contentWidget = new QWidget;

QVBoxLayout *layout =new QVBoxLayout(contentWidget);
ui->scrollArea->setWidget(contentWidget);
ui->scrollArea->setWidgetResizable(true);

QTextEdit *edit = new QTextEdit("hello world");
edit->setMinimumHeight(200);
// create others QTextEdit
layout->addWidget(edit);
// add the QTextEdits