2014-02-13 56 views
5

我想重叠QtDesigner中的两个小部件: 有一个大QTextBrowser,下面的右下角应该是一个非交互标签,我将用它作为拖动手柄来调整大小窗口(主窗口小部件是无框架的,所以我需要实现它)。 通常,此标签将位于QTextBrowser下方,该标签在标签左侧留下大量未使用的空间。所以我想把把手标签放在QTextBrowser上面。我想在QtDesigner中实现这一点。但代码看起来像: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(个体经营); ... gripImage = QLabel(self.textedit);

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

这就是它的外观,现在,但是这不是我想要的东西:

enter image description here

回答

7

这通常是最简单的使用QGridLayout来实现。它允许小部件占据相同的网格单元。对于这个特定的问题,1x1网格就足够了。

步骤来尝试一下与设计师

  1. 创建新的形式,普通的Widget为简单起见
  2. 添加一个文本编辑给它(拖放从Widget Box中下降),并从Object Inspector中你应该看到它成为根小部件
  3. 的孩子一个标签添加到它(从Widget Box中拖放),并从Object Inspector中你应该看到它成为根小部件
  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); 
+0

标签构件仍旁边的文本编辑,而不是在它上面的角落。我希望它会成为对象资源管理器中textedit的子项,如果我已经成功 – user2366975

+0

@ user2366975为答案添加了屏幕截图。 – hyde

+0

我还添加了一个截图。不知何故,我无法实现你所做的,只是在文本框旁边移动 – user2366975