2016-03-05 443 views

回答

3

看着source code of QTabBarQTabWidget的子元素),似乎这是不可能的。所有选项卡只有一个movable属性。

但是,你可以尝试以下方法:

  1. 子类QTabBar和抓老鼠新闻发布会一拖开始启用或禁用标签的移动之前。事情是这样的:

    void MyTabBar::mousePressEvent(QMouseEvent *event) { 
        // all tabs movable except first 
        setMovable(tabAt(event->pos()) != 0); 
    
        QTabBar::mousePressEvent(event); 
    } 
    
  2. 然后添加标签之前,请用你的子类中的默认的TabBar:

    myTabWidget->setTabBar(new MyTabBar()); 
    

这可能是有点漏水的,我还没有尝试过出。首先想到的是,setMovable()不再工作。也许拖动一些其他标签会导致一些奇怪的行为。


你有没有考虑过,也许QTabWidget不是正确的GUI元素?没有图形提示标签可拖动或不可以,并可能会混淆用户。也许最好使用QStackedWidget和自定义方式在页面之间切换。

+0

谢谢你的帮助。我不明白为什么人们搁置这个问题。我想我的问题根本不清楚。你怎么看? – Engo

+0

@Engo:我的两个猜测是(a)你只在标题中陈述问题(这是完全可以接受的)和(b)Qt的术语*移动*可能不容易理解。把它与一个巨大的接近队列结合起来,每个人只需花费几秒钟的时间......你就可以得到这张照片。 :-) –

相关问题