2012-01-18 13 views
1

ツールバーの「一時停止」ボタンと「設定」ボタンの間にスペーサーを使用して、「設定」ボタンをQToolBar内で右揃えにする予定です。下のセパレータは切断していません。Qt Designerのカスタムアクションプラグイン

QWidget* spacer = new QWidget(); 
spacer->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); 
// toolBar is a pointer to an existing toolbar 
toolBar->addWidget(spacer); 
toolBar->addAction("Right-aligned button"); 

のQt Designerが追加できるようにしていないようです(感謝http://www.ffuts.org/blog/right-aligning-a-button-in-a-qtoolbar/に):私は実際にそれをまだ試していないが、

Toolbar in need of spacer

次のような方法は明らかに、作品ウィジェットはQToolBarになりますが、QToolBarは上記のようにaddWidget()メソッドを持っています。 Qt Designer(プロモーションではなくプラグインを使用)を使用してツールバーにスペーサーを追加できるようにするには、QActionQWidget、またはQWidgetActionをサブクラス化する必要がありますか? Qt Designer用のカスタムアクションプラグインを作成する方法はありますか?

+0

「正しく表示されますか?質問:「Qt Designerはフォームデザインプロセスで実際のウィジェットを使用するため、カスタムウィジェットはプレビュー時と同じように表示されます。 http://developer.qt.nokia.com/doc/qt-4.8/designer-creating-custom-widgets.html –

+0

...つまり、ウィジェットであると仮定します。 –

+0

もちろん、カスタムウィジェットプラグインをDesignerの 'QToolBar'に追加することはできません。他のウィジェットと同じように。カスタム*アクション*プラグイン??? –

答えて

0

QActionをサブクラス化することはできません.QActionをQt Creator/Designerで正常に使用することはできません。それはUI内のタグを使用し、それらをメニューやツールバーに追加します。他のウィジェットと同じように、class = "customclass"要素を指定することはできません。アクションは別々に扱われるため、サブクラス化することさえできません。

QWidgetAction/QWidgetについては、QActionGroupと同じボートに入っています。 (私は個人的には、これがフォームデザイナーのデザインでは大きな間違いだと考えています)だから、デザイナーのプレビューも出ています。

あなたができる最後のもの(目に見えないオプション3)は、QToolbarのサブクラス化ですが、あなたはそれをサブクラス化することはできますが、それでも普通の古いQToolbarでできること以外は何も見えません。それは私が来るポイントである完全に外であることを意味しません:

本当の答えはデザイナープラグインとしてQToolbarをサブクラス化する目に見えないオプション4でなければなりません(あなたのコーディングあなたが既にそこにいるものを知らないなら、デザイナープラグインを実際に持っているものは分かりません)フォームデザイナープラグインはしばしばありますが、サブクラス化されたツールバーを見つけて自分で保存するプラグインにすることができますあなたのステップ(qtクリエイターにもそのためのテンプレートがあります)は、qtデザイナーとあなたのセットで使用してください。

私はこの質問が2年前に尋ねられたことを知っていますが、未回答の質問が表示されたとき、私は読んで行き止まりに苛まれてしまうかもしれない調査人を思います。あなたや他の誰かが正しい軌道に乗るのを手助けしてくれました。皆さんに幸運をもたらしました!

関連する問題