首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >动态扩展QTabBar

动态扩展QTabBar
EN

Stack Overflow用户
提问于 2016-06-08 08:51:38
回答 1查看 535关注 0票数 0

我正在通过QLineEdit动态地插入制表符,这很好。为了填充屏幕的整个宽度(800 my ),我使用自己的eventFilter扩展选项卡:

tub.h

代码语言:javascript
复制
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;
};

tabs.cpp

代码语言:javascript
复制
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 px,而不是在800 px(每个400 /400 px)中缩放两个选项卡。

它看起来像这样:错误插入

实际上应该是这样的:它应该是怎样的

我在这里做错什么了?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-06-08 09:45:53

您在选项卡上设置大小,而不是在QTabBar上设置大小。因此,很明显,新的选项卡将接受设置的宽度,直到调整大小。

您可以继承QTabBar并实现resizeEventtabInserted,这也使得eventFilter变得多余。

样本代码:

代码语言:javascript
复制
class CustomTabBar : public QTabBar
{
public:
    CustomTabBar(QWidget *parent = Q_NULLPTR)
        : QTabBar(parent)
    {
    }

protected:
    void resizeEvent(QResizeEvent *e) Q_DECL_OVERRIDE
    {
        /*resize handler*/
    }

    void tabInserted(int index) Q_DECL_OVERRIDE
    {
        /*new tab handler*/
    }

    void tabRemoved(int index) Q_DECL_OVERRIDE
    {
        /*tab removed handler*/
    }
};
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37697666

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档