如何自动扩展QStatusBar中的标签宽度

如何自动扩展QStatusBar中的标签宽度

问题描述:

我有一个QStatusBar。我添加了一个标签,在那里显示一个图标。现在我想模仿QStatusBar :: showMessage()的行为,方法是将另一个标签中的文本设置为状态栏的小部件。我需要这个,因为我不能在状态栏中设置标准消息的填充。否则,图标和文字会重叠。现在我希望包含消息文本的QLabel扩展到状态栏的全部宽度。我怎样才能做到这一点?如何自动扩展QStatusBar中的标签宽度

谢谢。

这是你可以尝试的东西,我从来没有尝试过状态栏,所以我不知道它是否有效,但我尝试了其他容器,并且效果很好。创建一个HBoxLayout,使用它的布局状态栏,添加图标和标签,并将layoutStretch设置为0,1(addStretch(0); addStretch(1)),0表示图标意味着它将伸展以适应图标和1,它将伸展到所有剩余空间,使标签展开为全宽。

该代码将是这个样子:

如果
QHBoxLayout *layout = new QHBoxLayout(statusBar); 
layout->setContentsMargins(11, 11, 11, 11); 
statusBar->setLayout(layout); 
layout->addStretch(0); 
layout->addWidget(iconlabel); 
layout->addStretch(1); 
layout->addWidget(textlabel); 

很抱歉,我们编译错误,现在不能尝试。希望有所帮助。

编辑: 尽管上面的代码是不是在工作,我不会删除它,becouse它是其它容器的正确方法。状态栏这应该工作:

statusBar->addWidget(iconLabel, 0); 
statusBar->addWidget(textLabel, 1); 
+0

出现的消息时,我尝试设置布局:QLayout:尝试添加QLayout“”到QStatusBar“”,它已经具备了布局 的QWidget :: setLayout的:尝试在QStatusBar“”上的QLayout“”,已经有布局 – vian 2011-04-23 21:06:04

+0

有一件事我注意到,在构造函数上设置父对象已经设置了布局,并且你不需要显式地调用setLayout。 – vian 2011-04-23 21:14:27

+0

结果是 - 当我首先设置文本 - 它适合。但是当我之后设置更长的文本时,它看起来被切断了。 – vian 2011-04-23 21:37:25