我的结构如下:
QWidget -QHBoxLayout -QLabel -QVBoxLayout -QLabel -QWebView
我希望 HBoxLayout 填充宽度,无论容器可能有多大,但不会多或少。但是,我希望 QVBoxLayout 扩展以适应其内容在垂直方向上的大小。
+-------------+------------------+ | 固定标题:| 扩展到宽度标题 + | |------------------------------+ | | + | | 这是一个包含到+的测试 | | 下一行 + | | + | | + | | + | | 呜呜呜呜+ | | + | | + | | + | | 没有垂直滚动 + | | 这里的酒吧 + +-------------+------------------+
在此示例中,FixedTitle 的宽度可以任意大,但永远不会调整大小。扩展至宽度标题会填满剩余的水平空间。
到目前为止,我有:
this->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed);
QHBoxLayout *layout = new QHBoxLayout;
this->setLayout(layout);
layout->addWidget(new QLabel(QString("FixedTitle")), 0, Qt::AlignTop);
QVBoxLayout *v_layout = new QVBoxLayout;
v_layout->setSizeConstraint(QLayout::SetNoConstraint);
layout->addLayout(v_layout);
v_layout ->addWidget(new QLabel(QString("Expanding to Width Title")), 1, Qt::AlignTop | Qt::AlignLeft);
QWebView *view = new QWebView();
QTextEdit text;
text.setPlainText(QSString("\nthis is a test which wraps to the next line\n\n\nbla bla bla\n\n\nthere are no vertical scroll bars here"));
view->setHtml(text.toHtml());
int width = view->page()->mainFrame()->contentsSize().width();
int height = view->page()->mainFrame()->contentsSize().height();
view->page()->setViewportSize(QSize(width, height));
view->resize(width, height);
view->setFixedSize(width, height);
v_layout->addWidget(view);
这有两个问题:1.它忽略了容器的宽度和2.它仍然没有正确获得QWebView的高度。
我该如何解决?