假设我有一个5英寸宽的标签小部件,当我向其添加标签时,每个标签宽度为1英寸。如何使标签在小部件中占据相同的长度空间,使每个标签宽2.5英寸?我正在使用QT Designer是否有可以设置的属性?
答案 0 :(得分:0)
好消息是QTabBar的属性几乎完全符合您的要求,即setExpanding。
坏消息是QTabWidget有效地忽略了该属性,因为它总是强制其标签为最小尺寸(即使你设置了自己的标签栏)。
最好的解决方法似乎是基于QTabBar和QStackedLayout创建自己的TabWidget类。但请注意,这仍然可能无法将标签扩展到填充所有可用空间。当我尝试它时,两个标签只能扩展到占据空间的三分之二 - 所以看起来如果可以的话,它总是可以留下一个标签的空间。
答案 1 :(得分:-1)
// Qt 5.12.2
class TabWidget : public QTabWidget
{
class TabBar : public QTabBar
{
QSize _size;
public:
TabBar(QWidget* a_parent) : QTabBar(a_parent)
{
setWidth(size().width());
}
QSize tabSizeHint(int index) const
{
return QSize(_size.width()/(count()?count():1), size().height());
}
void setWidth(int a_width)
{
_size = QSize(a_width, size().height());
QTabBar::resize(_size);
}
};
TabBar* _tabBar = new TabBar(this);
public:
TabWidget(QWidget* a_parent) : QTabWidget(a_parent)
{
setTabBar(_tabBar);
}
void resizeEvent(QResizeEvent *e) override
{
_tabBar->setWidth(size().width());
QTabWidget::resizeEvent(e);
}
};