【发布时间】:2012-08-26 15:01:07
【问题描述】:
我的结构如下:
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的高度。
我该如何解决这个问题?
【问题讨论】:
-
你能更清楚地解释一下你的规模目标吗?首先,您希望在第一个水平布局中的标签和布局之间发生什么大小调整?二、你想要垂直布局中的标签(textedit?)和webview之间的大小关系是什么?您是否试图让 webview 永远不会有水平滚动条?
-
@jdi 我加了一张小图,有帮助吗?
-
好的,谢谢。还有什么与 QTextEdit 的交易。你提到了两个 QLabels。
-
@jdi 我更新了它以更好地匹配图像。 QTextEdit 只是用来将文本转换为 html 页面。
-
最后一个问题。在 QTextEdit 和 QWebView 之间,您如何希望它们的大小与内容相关?我现在对其他组件很清楚。但是什么时候应该可以看到竖线呢?
标签: c++ qt layout widget qwebview