QT怎么在Qtabwidget控件tab栏左部加一个按钮,用来给用户手动增加tab

QT怎么在Qtabwidget控件tab栏左部加一个按钮,用来给用户手动增加tab,第1张

这个不难

按钮的槽里执行

tabWidget->addTab( this,"新tab标题" )

每次添加一个tab,这个按钮就得往右移动一定距离

对于一个QTabWidget,有时我们需要在不同的状态下显示不同的tab,需要隐藏掉某些tab。使用removeTab()固然可以做到,但是这样的话我们再次需要显示这些tab时再把它们加进去,有时候计算index会很麻烦。所以有没有什么办法可以在不删除tab的前提下隐藏掉某些tab呢,这样就能避免再次添加tab和计算index的麻烦。

遗憾的是Qt并没有对tab提供类似hide()或者setVisible()这样的接口(查看源码你会发现tab并不是QWidget),那么怎么做呢?我的方案是这样的:利用QTabWidget::setTabEnabled()接口与QSS来共同实现隐藏tab。

setTabEnabled()很容易理解,可以在不需要使用某些tab时将其禁用掉。但是禁用掉tab并不会使其隐藏,这时就需要QSS出马了。QSS实际上也不能隐藏tab,但它可以把处于禁用状态的tab宽度设为0,同时将文字颜色设为透明,然后就看不到这个tab了,这样就间接达到了隐藏的目的。

用TabView可以否?

调用 Qt.createComponent 或者 Qt.createQmlObject 可否?

如 (自Qt,帮助文档)

Item {

id: container

width: 300height: 300

function loadButton() {

var component = Qt.createComponent("Button.qml")

if (component.status == Component.Ready) {

var button = component.createObject(container)

button.color = "red"

}

}

Component.onCompleted: loadButton()

}

var newObject = Qt.createQmlObject('import QtQuick 2.0Rectangle {color: "red"width: 20height: 20}',

parentItem, "dynamicSnippet1")


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/11570104.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-17
下一篇2023-05-17

发表评论

登录后才能评论

评论列表(0条)

    保存