2011-07-18 12 views
18

ポップアップメニューが添付されたQActionsまたはQToolbarButtonsを含むQt内のツールバーが必要です。 QMenuを作成してQToolbarButtonに追加し、それをQToolbarに追加することで、コード内でこれを完全に行うことができました。私の問題は、これがデザイナーで完全にできなければならないということです。Qt Designerを使用してボタンとポップアップメニューでQToolbarを定義する方法はありますか?

これは私がコードを経由してやっていることですが、私はQTデザイナーのボタンやメニューを定義したい:私たちはqtのデザイナーをやりたいと思っている何
http://img402.imageshack.us/img402/7669/exmaple.png

は、インタフェースからコードを分離することです。たとえば、ある人がフォームの外観とコンポーネントを設計してから、プログラマーがこれを受け取り、その背後にある機能をコード化できるということです。プログラマーがツールバーやメニューを設計しなければならない場合、これを非常に効果的に達成することはできません。

これは多くのアプリケーションにとってかなり一般的な要件であると思われ、Qtがデザイナーの代わりにコードでこれを強制的に実行する方法がわかりません。

これがどのように行われたかについて誰かが知っていれば、多分私はQtに何か不足していますか?

答えて

-1

Qt Creatorの左上にあるGUIを設計するときに、「mainToolBar」や「menuBar」のようなものが含まれているボックスが必要です。これに似たものがあることを確認してください。次に、Qt Creatorウィンドウの下部に、信号& Slots EditorタブとAction Editorタブが占有するスペースがあります。アクションエディタに移動し、新しいアクションオプションを選択します。これにより、アクションを作成できます。 これはあなたが探していたものですか?

+0

どのようにメニューを作成するために使用できますか?ツールバーの他のアクションの下にアクションをドラッグすることができず、それ以外の方法はありません。 –

25

QT Designerのツールバーのサポートは、直感的ではなく、限られているようです。 QT Designerのツールバーに直接ドロップダウンアクションを含むポップアップメニューを追加する方法はわかりません。

次のようにプッシュボタンを追加できます。まず、メインウィンドウを右クリックし、「ツールバーの追加」を選択します。これにより、メインウィンドウの上部にVERY SLIMツールバーが追加されます(空であるため、スリムです)。

次に、アクションエディタでアクションを追加します。 QT Designerのペインの1つで、表示されていない場合は[表示] - > [アクションエディタ]を選択します。ここで新しいアクションを作成できます。

次に、アクションをツールバーにドラッグして、アクションをトリガーするプッシュボタンを設定します。

私はあなたがポップアップメニューを望んでいることを知っていますが、私が知る限り、それはQT Designerでできることの範囲です。 severalothersと同じ結論になったようです。

+2

私はこの素晴らしい答えが「答え」として設定されていないことに驚いています。 – ExpatEgghead

+0

アップデート:Qt Designer 4.8.5以降、QToolButtonのようなボタンのコンテキストメニューを含める方法はまだありません。少なくともQt Designerや[Qt Designerのドキュメント](http://qt-project.org/doc/qt-4.8/designer-manual.html)には何も書かれていません。 – Trilarion

+0

偉大な答え。私はアクションがツールバーにドラッグできることを決して実現していない。 – Eric

2

これには面倒なトリックがあります。必要なウィジェットをQt DesignerのQWidget(または、QFrame)の特別な場所に配置し、そのウィジェットをコードのツールバーに追加することができます。

QWidget(または任意のもの)から派生した、たとえばQMyToolbarItemという名前の新しいQtクラスを追加します。 QtデザイナーでQMyToolbarItem.uiを開きます。複雑なウィジェットを追加してください。ポップアップメニューには、QComboBoxまたはポップアッププッシュボタンを使用できます。 (私はすでにこれが厄介だと言いました)。それを保存。

ui.mainToolBar->addWidget(new QMyToolbarItem(this)); 

が正しくQMyToolbarItemのサイズポリシーを設定することを忘れないでください(例えば所望の値にQMyToolbarItemminimumSizeを設定):コードでは、あなただけのQMainWindowのツールバーにカスタムウィジェットを追加する必要があります。そうしないと、ツールバーに何も表示されません。

もちろん、通常のアイテムをツールバーに追加したくない場合にのみ、これは問題ありません。そうすることで、QActionモデルの大きな力を失うことに注意してください。

とにかく、それはコードからUI設計のものを十分に分離しており、ツールバーの複雑なウィジェットデザインよりも優れています。

最後に、Model View patternsがUIロジックを基本ロジックと効率的に分離することを忘れないでください。

関連する問題