我有一台QStatusBar。我已经添加了一个标签,在那里显示了一个图标。现在,我想模拟QStatusBar::showMessage()的行为,方法是在我作为小部件添加到状态栏的另一个标签中设置文本。我需要这个,因为我不能在状态栏中设置标准消息的填充。否则,图标和文本会重叠。现在,我希望包含消息文本的QLabel展开到状态栏的整个宽度。我该怎么做呢?
谢谢。
发布于 2011-04-23 20:41:18
这里有一些你可以尝试的东西,我从来没有在状态栏上尝试过,所以我不知道它是否有效,但我确实在其他容器上尝试过,效果很好。创建一个HBoxLayout,使用它布置状态栏,添加图标和标签,并将layoutStretch设置为0,1 (addStretch(0);addStretch(1)),0表示图标,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);https://stackoverflow.com/questions/5759146
复制相似问题