私の構造は次のとおりです。
QWidget -QHBoxLayout -QLabel -QVBoxLayout -QLabel -QWebView
コンテナがどんなに大きくても、HBoxLayoutが幅を埋めるようにしたいのですが、多かれ少なかれ行きません。ただし、QVBoxLayoutを拡張して、コンテンツの垂直方向のサイズに対応させたいと思います。
+ ------------- + ------------------------------ + | FixedTitle:| タイトル幅に拡大+ | | ------------------------------ + | | + | | これは+にラップするテストです | | 次の行+ | | + | | + | | + | | bla bla bla + | | + | | + | | + | | 垂直スクロールはありません+ | | ここのバー+ + ------------- + ------------------------------ +
この例では、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);
これには2つの問題があります。1。コンテナの幅を無視します。2。それでもQWebViewの高さを正しく取得しません。
これを修正するにはどうすればよいですか?