所以,事情的真相是 QToolBar 类并没有作为一个小部件暴露给设计师。加载后,您可以完全访问它。您的问题有 2 个相对简单的解决方案 - 取决于您需要多久执行一次。
1:破解 UI 文件
- 如果您创建一个 UI 文件,请将一个新的空白 QWidget 拖入其中。
- 将文件保存到磁盘
- 使用文本编辑器打开它并将 QWidget 类更改为 QToolBar
- 在设计器中重新打开,您现在在 UI 文件中有一个 QToolBar 可以使用。
如果您只是偶尔这样做 - 这不是一个糟糕的方法。
2:制作一个QToolBar Designer插件
稍微长一点的方法(但如果你经常使用它会更好)是自己将 QToolBar 暴露给设计器。唯一有点烦人的是你不能通过拖放来移动它......但无论如何,你仍然可以使用它并放入布局和所有东西。
我主要处理 PyQt,所以这就是插件在 PyQt 中的样子——但您可以阅读标准文档以了解如何在 C++ 中执行此操作。
#!/usr/bin/python
''' Auto-generated ui widget plugin '''
from PyQt4.QtDesigner import QPyDesignerCustomWidgetPlugin
from PyQt4.QtGui import QIcon
from PyQt4.QtGui import QToolBar as WidgetClass
class QToolBarPlugin( QPyDesignerCustomWidgetPlugin ):
def __init__( self, parent = None ):
super(QToolBarPlugin, self).__init__( parent )
self.initialized = False
def initialize( self, core ):
if ( self.initialized ):
return
self.initialized = True
def isInitialized( self ):
return self.initialized
def createWidget( self, parent ):
return WidgetClass(parent)
def name( self ):
if ( hasattr( WidgetClass, '__designer_name__' ) ):
return WidgetClass.__designer_name__
return WidgetClass.__name__
def group( self ):
if ( hasattr( WidgetClass, '__designer_group__' ) ):
return WidgetClass.__designer_group__
return 'ProjexUI'
def icon( self ):
if ( hasattr( WidgetClass, '__designer_icon__' ) ):
return QIcon(WidgetClass.__designer_icon__)
return QIcon()
def toolTip( self ):
if ( hasattr( WidgetClass, '__designer_tooltip__' ) ):
return WidgetClass.__designer_tooltip__
elif ( hasattr( WidgetClass, '__doc__' ) ):
return str(WidgetClass.__doc__)
return ''
def whatsThis( self ):
return ''
def isContainer( self ):
if ( hasattr( WidgetClass, '__designer_container__' ) ):
return WidgetClass.__designer_container__
return False
def includeFile( self ):
return 'PyQt4.QtGui'
def domXml( self ):
if ( hasattr( WidgetClass, '__designer_xml__' ) ):
return WidgetClass.__designer_xml__
return '<widget class="QToolBar" name="toolbar"/>'