したがって、問題の真実は、QToolBarクラスがウィジェットとしてデザイナーに公開されなかったということです。ロードされると、それに完全にアクセスできます。あなたの問題には2つの比較的簡単な解決策があります-あなたがそれをする必要がある頻度に依存します。
1:UIファイルをハックする
- UIファイルを作成する場合は、新しい空白のQWidgetをそのファイルにドラッグします。
- ファイルをディスクに保存します
- テキストエディタで開き、QWidgetクラスをQToolBarに変更します
- Designerで再度開くと、UIファイルにQToolBarが含まれています。
これをたまにしか行わない場合、これは悪い方法ではありません。
2:QToolBarDesignerプラグインを作成します
それを行うための少し長い方法(ただし、これを頻繁に使用する場合はより良い)は、QToolBarを自分でDesignerに公開することです。この方法で少し面倒なのは、ドラッグ/ドロップで移動できないことだけです...しかし、それでも使用して、レイアウトなどすべてを配置できます。
私は主に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"/>'