我有一个QStatusBar。我添加了一个标签,在那里显示一个图标。现在我想模拟QStatusBar :: showMessage()的行为,方法是将我作为窗口小部件添加到状态栏的另一个标签中的文本设置。我需要这个,因为我无法在状态栏中设置标准消息的填充。否则图标和文本重叠。现在我希望包含消息文本的QLabel扩展到状态栏的整个宽度。我怎么能这样做?
感谢。
答案 0 :(得分:1)
这是你可以尝试的东西,我从来没有在状态栏上试过,所以我不知道它是否有效但是我确实试过其他容器并且效果很好。创建一个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);
对不起,如果有编译错误,现在就无法尝试。希望有所帮助。
修改强> 尽管上面的代码不起作用,我不会删除它,因为它是其他容器的正确方法。对于状态栏,这应该有效:
statusBar->addWidget(iconLabel, 0);
statusBar->addWidget(textLabel, 1);