QTabBar
的子元素)的
source代码,这似乎是不可能的。所有选项卡只有一个
QTabWidget
属性。
,但是,您可以尝试以下操作:SubClass
movable
QTabBar
然后在添加选项卡之前,用子类替换默认的塔巴尔:void MyTabBar::mousePressEvent(QMouseEvent *event) {
// all tabs movable except first
setMovable(tabAt(event->pos()) != 0);
QTabBar::mousePressEvent(event);
}
这可能有点漏水,我没有尝试过。想到的第一件事是
myTabWidget->setTabBar(new MyTabBar());
不再起作用。也许还拖动其他一些选项卡会导致一些奇怪的行为。
setMovable()
不是正确的GUI元素吗?没有图形提示标签是否可拖动,可能会使用户感到困惑。也许最好使用一种自定义方式来在页面之间进行更改。
在可接受的答案上有所扩展,调用用户单击选项卡上的工作,但这并不能防止将可移动选项卡拖动到您不想移动的选项卡的位置。在这些情况下恢复移动需要从QTabWidget
信号中跟踪某些状态,并撤消
QStackedWidget
处理程序中的移动。
这就是我在python中做到的:
setMovable()
tabMoved