QtDesigner中重叠的小部件

use*_*975 7 qt qt-designer

我想在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);

括号之间的部分是父窗口小部件.

这就是它现在的样子,但这不是我想要的:

在此输入图像描述

hyd*_*yde 8

这通常是最简单的使用方法QGridLayout.它允许小部件占用相同的网格单元格.对于这个特殊问题,1x1网格就足够了.

与设计师一起尝试的步骤:

  1. 为简单起见,创建新的表单,简单的Widget
  2. 添加一个文本编辑(从Widget Box拖放),从Object Inspector你应该看到它成为根小部件的子代
  3. 添加一个标签(从Widget Box拖放),从Object Inspector你应该看到它成为根小部件的子项
  4. 右键单击根小部件(在Object Inspector中最简单),然后从上下文菜单的底部选择Lay out> - Lay in Grid
  5. 右键单击标签,然后从布局对齐>将其对齐到所需的角

完成.这是我的设计师的样子:

在此输入图像描述

现在适应你的真实形式.


好吧,看起来上面用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)