3
我需要在QTabWidget中只设置一个选项卡为不可移动的。我找不到办法做到这一点。另外在Qt设计器中,您只能(不)检查“可移动”,但这不适用于一个特定的选项卡。如何设置QTabWidget中只有一个选项卡在Qt中不可移动?
我需要在QTabWidget中只设置一个选项卡为不可移动的。我找不到办法做到这一点。另外在Qt设计器中,您只能(不)检查“可移动”,但这不适用于一个特定的选项卡。如何设置QTabWidget中只有一个选项卡在Qt中不可移动?
看着source code of QTabBar
(QTabWidget
的子元素),似乎这是不可能的。所有选项卡只有一个movable
属性。
但是,你可以尝试以下方法:
子类QTabBar
和抓老鼠新闻发布会一拖开始启用或禁用标签的移动之前。事情是这样的:
void MyTabBar::mousePressEvent(QMouseEvent *event) {
// all tabs movable except first
setMovable(tabAt(event->pos()) != 0);
QTabBar::mousePressEvent(event);
}
然后添加标签之前,请用你的子类中的默认的TabBar:
myTabWidget->setTabBar(new MyTabBar());
这可能是有点漏水的,我还没有尝试过出。首先想到的是,setMovable()
不再工作。也许拖动一些其他标签会导致一些奇怪的行为。
你有没有考虑过,也许QTabWidget
不是正确的GUI元素?没有图形提示标签可拖动或不可以,并可能会混淆用户。也许最好使用QStackedWidget
和自定义方式在页面之间切换。
谢谢你的帮助。我不明白为什么人们搁置这个问题。我想我的问题根本不清楚。你怎么看? – Engo
@Engo:我的两个猜测是(a)你只在标题中陈述问题(这是完全可以接受的)和(b)Qt的术语*移动*可能不容易理解。把它与一个巨大的接近队列结合起来,每个人只需花费几秒钟的时间......你就可以得到这张照片。 :-) –