【发布时间】:2011-04-24 09:04:56
【问题描述】:
我有一个 QStatusBar。我添加了一个标签,在那里显示一个图标。现在,我想通过在另一个标签中设置文本来模拟 QStatusBar::showMessage() 的行为,该标签已作为小部件添加到状态栏。我需要这个,因为我无法在状态栏中设置标准消息的填充。否则图标和文本会重叠。现在我希望包含消息文本的 QLabel 扩展到状态栏的全宽。我该怎么做?
谢谢。
【问题讨论】:
标签: qt
我有一个 QStatusBar。我添加了一个标签,在那里显示一个图标。现在,我想通过在另一个标签中设置文本来模拟 QStatusBar::showMessage() 的行为,该标签已作为小部件添加到状态栏。我需要这个,因为我无法在状态栏中设置标准消息的填充。否则图标和文本会重叠。现在我希望包含消息文本的 QLabel 扩展到状态栏的全宽。我该怎么做?
谢谢。
【问题讨论】:
标签: qt
这是您可以尝试的东西,我从未在状态栏上尝试过,所以我不知道它是否有效,但我确实尝试过其他容器并且效果很好。创建一个 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);
【讨论】: