我想在QtDesigner中叠加两个小部件:有一个很大的QTextBrowser,右下角的下面应该是一个非交互式标签,我将用它作为一个拖动手柄来调整窗口大小(主要小部件是无框架的所以我需要实现它).通常这个标签将位于QTextBrowser下方,它在grip-label的左侧留下了大量未使用的空间.所以我想把把手标签放在QTextBrowser上面.我想在QtDesigner中实现这一点.但代码看起来像:
QHBoxLayout *layout = new QHBoxLayout(videoWidget);
QLabel *overlayWidget = new QLabel();
overlay->setAlignment(Qt::AlignCenter);
overlay->setText("Overlaid Text");
layout->addWidget(overlay);
Run Code Online (Sandbox Code Playgroud)
或者正如我在python中所做的那样:self.textedit = QTextBrowser(self); ... gripImage = QLabel(self.textedit);
括号之间的部分是父窗口小部件.
这就是它现在的样子,但这不是我想要的:
这通常是最简单的使用方法QGridLayout
.它允许小部件占用相同的网格单元格.对于这个特殊问题,1x1网格就足够了.
与设计师一起尝试的步骤:
完成.这是我的设计师的样子:
现在适应你的真实形式.
好吧,看起来上面用Designer很难实现,也许是运气好的事情恰到好处......设计师似乎并不支持做你想做的事情.
为清楚起见,这是一个完整的源代码:
QGridLayout *layout = new QGridLayout(widget);
QTextBrowser *textBrowser = new QTextBrowser();
QLabel *label = new QLabel();
label->setText("Overlaid Text");
//label gets positioned above textBrowser and is an overlay
layout->addWidget(textBrowser, 0, 0, Qt::AlignLeft | Qt::AlignTop);
layout->addWidget(label, 0, 0, Qt::AlignRight | Qt::AlignBottom);
Run Code Online (Sandbox Code Playgroud)