QtDesigner中的重叠小部件

2024-05-14 10:39:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我想在QtDesigner中覆盖两个小部件: 有一个大的QTextBrowser,右下角的下方应该是一个非交互标签,我将使用它作为拖动夹点来调整窗口大小(主窗口小部件是无框架的,所以我需要实现它)。 通常,此标签将位于QTextBrowser的下方,这会在夹点标签的左侧留下大量未使用的空间。因此,我想将夹点标签放在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)

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

现在看起来就是这样,但这不是我想要的:

enter image description here


Tags: 代码self框架new部件空间标签layout
2条回答

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

使用designer进行试用的步骤:

  1. 创建新的表单,简单的小部件
  2. 向其添加文本编辑(从窗口小部件框拖放),从对象检查器中,您应该看到它成为根窗口小部件的子级
  3. 向它添加一个标签(从小部件框拖放),从对象检查器中,您应该看到它成为根小部件的子部件
  4. 右键单击根窗口小部件(在对象检查器中最简单),然后从关联菜单的底部,选择布局>-在网格中布局
  5. 右键单击标签,然后从布局对齐>将其设置为与所需的角对齐

完成了。以下是我的设计器中的外观:

enter image description here

现在,让以上内容适应你的真实形态


好吧,看来和设计师一起实现上面的目标是很难的,也许是做得恰到好处有点运气的问题。。。设计师似乎不支持做你想做的事情

为清楚起见,这是一个完整的源代码:

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); 

我也有同样的问题,但我没有设法在QtDesigner中添加重叠的小部件。相反,我必须在初始化主窗口后动态创建重叠窗口

我有两个小部件:

  • dataset\u tableWidget(tableWidget)
  • 微调器\u数据集\u表格小部件(QtWaitingSpinner

我想让spinner\u dataset\u tableWidget在dataset\u tableWidget上旋转

初始化主窗口后,您可以执行以下操作:

#Crating QtWaitingSpinners dinamically and positioning it over the tableWidgets
dataset_tableWidget = QtWaitingSpinner(dataset_tableWidget)
dataset_tableWidget.setSizePolicy(dataset_tableWidget.sizePolicy())

相关问题 更多 >

    热门问题