0

我正在尝试使页面看起来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);

这个想法很简单,只需使用滚动条容器并将其添加到垂直布局中,每次我需要一个页面时,新建一个QTextEdit并将其添加到滚动条中的垂直布局中。

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

图片

所以我做错了什么,以至于滚动条不起作用,以及如何让每个QTextEdit页面看起来都很好,大小合适,让我看起来像 Microsoft word 或 pdf 之类的有页面的东西。

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

4

1 回答 1

1

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

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 
于 2018-01-18T15:30:25.647 回答