pyQt4 QTabWidget setMovable 使用自定义 QTabBar 崩溃
Posted
技术标签:
【中文标题】pyQt4 QTabWidget setMovable 使用自定义 QTabBar 崩溃【英文标题】:pyQt4 QTabWidget setMovable crashes with custom QTabBar 【发布时间】:2011-12-08 18:04:07 【问题描述】:我正在尝试制作一个带有可移动自定义标签栏的标签小部件。如果我不将QTabBar
和setMovable(True)
子类化,该程序可以正常工作,但我需要访问QTabBar
提供的mouseDoubleClickEvent
,因此子类化。当您运行程序时,一切正常,直到您尝试用鼠标移动选项卡。我觉得我已经尝试了我能想到的setMovable
的所有可能组合,但没有任何效果。我做错了吗?
使用:
python v2.7.2
PyQt4 v4.8.5
和令人作呕的 Windows XP
from PyQt4.QtGui import *
from PyQt4.QtCore import *
import sys
class Main(QWidget):
def __init__(self, parent=None):
super(Main, self).__init__(parent)
self.widgetBox = QHBoxLayout(self)
self.tabs = CTabWidget()
self.widgetBox.addWidget(self.tabs)
self.setLayout(self.widgetBox)
class CTabWidget(QTabWidget):
def __init__(self, parent=None):
super(CTabWidget, self).__init__(parent)
self.tabBar = CTabBar(self)
self.tabBar.addTab("Foo")
self.tabBar.addTab("Bar")
self.setTabBar(self.tabBar)
self.setTabPosition(QTabWidget.West)
self.setMovable(True)
class CTabBar(QTabBar):
def __init__(self, parent=None):
super(CTabBar, self).__init__(parent)
self.setMovable(True)
def addTab(self, string):
super(CTabBar, self).addTab(QString(string))
def mouseDoubleClickEvent(self, event):
print "Change name"
class Run(object):
def __init__(self):
app = QApplication(sys.argv)
app.setStyle(QStyleFactory.create("plastique"))
main = Main()
main.show()
sys.exit(app.exec_())
Run()
【问题讨论】:
【参考方案1】:使用QTabWidget.addTab 方法添加选项卡,并确保将小部件与每个选项卡关联:
class CTabWidget(QTabWidget):
def __init__(self, parent=None):
super(CTabWidget, self).__init__(parent)
self.tabBar = CTabBar(self)
self.setTabBar(self.tabBar)
self.setTabPosition(QTabWidget.West)
self.tab1 = QWidget(self)
self.tab2 = QWidget(self)
self.addTab(self.tab1, "Foo")
self.addTab(self.tab2, "Bar")
class CTabBar(QTabBar):
def __init__(self, parent=None):
super(CTabBar, self).__init__(parent)
self.setMovable(True)
def mouseDoubleClickEvent(self, event):
print "Change name"
【讨论】:
以上是关于pyQt4 QTabWidget setMovable 使用自定义 QTabBar 崩溃的主要内容,如果未能解决你的问题,请参考以下文章
PyQt4 菜单操作以将新选项卡添加到 QTabWidget
PyQt4 QTabWidget TAB CHANGE....currentChange(int) 不起作用
pyQt4 QTabWidget setMovable 使用自定义 QTabBar 崩溃