0
私は親メニューの中にいくつかの子供QMenu
を持っています。 &QMenu::aboutToShow
コードの後に、サブメニューのいくつかのアクションが隠され、サブメニューが空のまま残されることがあります(アクションはありません)。Qt空のサブメニューを非表示
これらの空のサブメニューを自動的に非表示にするにはどうすればよいですか?
私は親メニューの中にいくつかの子供QMenu
を持っています。 &QMenu::aboutToShow
コードの後に、サブメニューのいくつかのアクションが隠され、サブメニューが空のまま残されることがあります(アクションはありません)。Qt空のサブメニューを非表示
これらの空のサブメニューを自動的に非表示にするにはどうすればよいですか?
コードを見ることなく言うのは難しいですが...実際の問題は、空のサブメニュー自体を隠すのではなく、親のサブメニューに関連付けられた「タグ」テキストを隠すことではないと思います。そのためには、単にサブメニューを隠すのではなく、サブメニューに関連付けられたQAction
を隠す必要があります。
次は、私はあなたが含まれるようにするために、それは良いアイデアだと思う...
QMenu menu;
menu.addAction("First");
menu.addAction("Second");
/*
* Add empty submenu.
*/
auto *sm = menu.addMenu("Not empty if you can see this");
menu.addAction("Third");
QObject::connect(&menu, &QMenu::aboutToShow,
[&]()
{
hide_the_empties(&menu);
});
menu.exec(QCursor::pos());
/*
* Populate submenu.
*/
auto *a1 = sm->addAction("Sub action 1");
auto *a2 = sm->addAction("Sub action 2");
menu.exec(QCursor::pos());
/*
* Clear submenu again.
*/
sm->clear();
menu.exec(QCursor::pos());
でテスト
...あなたが欲しいもの(と思う)やって表示されますあなたが持っているQMenu :: aboutToShowコード。私はそのコードでは、サブメニューをループして空のものを隠すかもしれないと思います。 – user2672165