23

ポップアップメニューが添付されたQActionsまたはQToolbarButtonsのいずれかを含むQtにツールバーが必要です。QMenu を作成し、それを QToolbarButton に追加し、それを QToolbar に追加することで、コードでこれを完全に行うことができました。私の問題は、これをデザイナーで完全に実行できるはずだということです。

これは私がコードで行ったことです。qt デザイナーでボタンとメニューを定義したいと思います。
http://img402.imageshack.us/img402/7669/exmaple.png

qt デザイナーでやりたいことは、コードをインターフェイスから分離することです。たとえば、これは、ある人がフォームの外観とコンポーネントを設計し、プログラマーがこれを使用してその背後にある機能をコーディングできることを意味します。プログラマーがツールバーとメニューを設計しなければならない場合、これを効率的に行うことはできません。

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

これがどのように行われるかについて誰かが何か考えを持っているなら、Qtで何かが欠けているのではないでしょうか?

4

4 に答える 4

42

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

次のようにプッシュボタンを追加できます。まず、メインウィンドウを右クリックして、[ツールバーを追加]を選択します(まだ持っていない場合)。これにより、メインウィンドウの上部に非常にスリムなツールバーが追加されます(空であるためスリムです)。

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

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

ポップアップメニューが必要だったのは知っていますが、私が知る限り、それはQtDesignerでできることの範囲です。他の何 かが同じ結論に達したようです。

于 2012-05-26T22:23:24.507 に答える
4

これには厄介なトリックがあります。目的のウィジェットをQtDesignerの特別なQWidget(または、たとえばQFrame)に配置し、そのウィジェットをコードのツールバーに追加できます。

たとえばQMyToolbarItem、から派生したQWidget(または適切なもの)という名前の新しいQtクラスをプロジェクトに追加します。次にQMyToolbarItem.ui、Qtデザイナーで開きます。複雑なウィジェットを追加します。QComboBoxポップアップメニューには、またはポップアッププッシュボタンを使用できます。(これは厄介だとすでに述べました)。それを保存。QMainWindowコードでは、カスタムウィジェットをのツールバーに追加するだけです。

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

サイズポリシーを適切に設定することを忘れないでくださいQMyToolbarItem(たとえば、minimumSizeQMyToolbarItemを目的の値に設定します)。それ以外の場合、ツールバーには何も表示されません。

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

とにかく、それはUIデザインのものをコードから十分に分離し、ツールバーの複雑なウィジェットデザインに対して優れたパワーを提供します。

最後に、UIロジックを基盤となるビジネスロジックから効率的に分離するために、適切なモデルビューパターンを検討することを忘れないでください(まだ行っていない場合)。

于 2013-02-11T14:21:46.500 に答える
-1

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

于 2011-12-23T21:57:40.287 に答える