如何在qtabwidget中仅设置一个选项卡,因为qt中不可移动?

问题描述 投票:0回答:2

c++ qt qtabwidget
2个回答
5
投票

QTabBar的子元素)的

source代码,这似乎是不可能的。所有选项卡只有一个
QTabWidget属性。
,但是,您可以尝试以下操作:

SubClass

movable

并在拖动开始启用或禁用选项卡的移动之前捕获鼠标按事件。这样的东西:
  1. QTabBar

    然后在添加选项卡之前,用子类替换默认的塔巴尔:
    void MyTabBar::mousePressEvent(QMouseEvent *event) {
        // all tabs movable except first
        setMovable(tabAt(event->pos()) != 0);
    
        QTabBar::mousePressEvent(event);
    }
    
  2. 这可能有点漏水,我没有尝试过。想到的第一件事是
    myTabWidget->setTabBar(new MyTabBar());
    
    不再起作用。也许还拖动其他一些选项卡会导致一些奇怪的行为。
  3. 您考虑过,也许A
setMovable()

不是正确的GUI元素吗?没有图形提示标签是否可拖动,可能会使用户感到困惑。也许最好使用一种自定义方式来在页面之间进行更改。


在可接受的答案上有所扩展,调用用户单击选项卡上的工作,但这并不能防止将可移动选项卡拖动到您不想移动的选项卡的位置。在这些情况下恢复移动需要从
QTabWidget

信号中跟踪某些状态,并撤消

QStackedWidget
处理程序中的移动。
这就是我在python中做到的:

setMovable()

0
投票
然后使用它:

tabMoved
	
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.