我想在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);
或者正如我在python中所做的那样: self.textedit = QTextBrowser(self); ... gripImage = QLabel(self.textedit);
括号之间的部分是父窗口小部件。
这就是现在的样子,但这不是我想要的:
答案 0 :(得分:8)
使用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);
答案 1 :(得分:0)
我遇到了同样的问题,但是我没有设法在QtDesigner中添加重叠窗口小部件。相反,我必须在初始化MainWindow之后动态创建重叠的一个。
我有两个小部件:
我想让spinner_dataset_tableWidget旋转到dataset_tableWidget上。
初始化MainWindow后,您可以执行以下操作:
#Crating QtWaitingSpinners dinamically and positioning it over the tableWidgets
dataset_tableWidget = QtWaitingSpinner(dataset_tableWidget)
dataset_tableWidget.setSizePolicy(dataset_tableWidget.sizePolicy())