2023-05-14  MultiTabMenuWidget

マルチタブメニュークラスサンプル

右クリックメニューを別色を付けて分かりやすく

拙作 SengokuMap で作った 戦国大名139人のから 城の領主をユーザーが選択する時に使う右クリックメニューです。

こんなのを作ります。
作り込みが面倒なのであまり凝った造りにはしない人が多いのでは無いでしょか。
右クリックメニューを階層化して数を多く対応すればいいですからね。

MultiTabMenuWidgetクラス

マルチタブメニューと データ設定ダイアログの2つの機能を持たせます。

  • データ設定ダイアログ

    数が多い設定画面を作る時の参考になると思います。
    全て動的に画面を作成します。

mainwindow.cpp
// データ設定ダイアログを表示する QDialog dlg; // ダイアログを親Widgetとして生成 MultiTabMenuWidget *multiTabMenuWidget = new MultiTabMenuWidget(&dlg); dlg.exec(); delete multiTabMenuWidget;

QDialog を親としてクラスを生成すると データ設定ダイアログを表示します。
QMainWindow を親として setCentralWidget(multiTabMenuWidget) でも可能です。

  • マルチタブメニューとして表示

    ゴリゴリ動的にメニューを作成しています。
    数の多いデータでユーザー選択する場面の時に参考としてください。

    親画面からの呼び出しは以下になります。
mainwindow.cpp
// この場合は、親なしで生成 MultiTabMenuWidget* multiTabMenuWidget = new MultiTabMenuWidget(); // prect 選択メニューを表示するのに、上側、下側等の判定に使う QRect prect = this->frameGeometry(); // 選択メニューを表示 int colorno = multiTabMenuWidget->SelectClassName(prect); // 選択しなかった場合は -1 if(colorno >= 0){ // ここで選択された番号を使って処理をします。 qDebug() << "colorno=" << colorno; } delete multiTabMenuWidget;

親無しで生成すると データ設定ダイアログ部品は生成されません。
データ読込だけします。
int colorno = multiTabMenuWidget->SelectClassName(prect);
でメニューを表示します。

サンプルプログラムソース

説明が少ないですが ソースを見て動かしながら改造してください。

MultiTabMenuWieget サンプルプログラム
ソースダウンロード 

最終更新日 2023-05-15
この記事を共有しませんか?
ブックマーク