我通过 QLineEdit 动态插入选项卡,效果很好。为了填充屏幕的整个宽度(800px),我正在使用我自己的 eventFilter 扩展选项卡:
选项卡.h
class ResizeFilter : public QObject
{
QTabBar *target_tabs;
public:
ResizeFilter(QTabBar *target_tabs) : QObject(target_tabs), target_tabs(target_tabs) {}
bool eventFilter(QObject *object, QEvent *event)
{
if (object == target_tabs) {
if (event->type() == QEvent::Resize)
{
// The width of each tab is the width of the tabbar / # of tabs.
target_tabs).arg(target_tabs->size().width()/target_tabs->count()));
}
}
return false;
}
};
class tabs : public QWidget
{
Q_OBJECT
private:
QTabBar *cells;
};
选项卡.cpp
void tabs::changeTabs(int value)
{
tabs->installEventFilter(new ResizeFilter(tabs));
if (tabs->count() < value)
tabs->insertTab(tabs->count(), QIcon(QString("")), QString::number(value));
}
运行应用程序后,一个选项卡始终可见并正确展开。如前所述,最大宽度设置为 800 像素。添加新选项卡工作正常,但调整大小事件会弄乱尺寸标注。假设我要添加第二个选项卡,它在第一个选项卡旁边显示 800 像素,而不是在 800 像素(每个 400 / 400 像素)内缩放两个选项卡。
它看起来像这样: 错误插入
当它实际上应该是这样的: 它应该是怎样的
我在这里做错了什么?