QMenuBar'daki öğeleri otomatik olarak açmam (göster veya aç) gerektiren bir projede çalışıyorum.Bir menüdeki Qt'deki eylemler nasıl yinelenir?
en sonraki menü çubuğu var diyelim:
File Edit Help
-op1 -op1 -op1
-op2 -op2 -op2
bir eylem (yani eylemin asociated menüyü göster) Kullandığım ayarlamak için:
menuBar->setActiveAction(mymenuactionpointer);
bildiğim gibi, ben kullanabilirsiniz aşağıdaki biri QMenuBar elemanlarına işaretçiler bir listesini almak için:
QMenuBar::actions();
veya
QList<Object*> lst1 = QMenuBar::findChildren<QObject*>();
QList<Object*> lst2 = QMenuBar::findChildren<QAction*>();
Ben QMenuBar::findChildren<QAction*>()
yoksa menubar menülerinin listesi, yani, benim QMenuBar gelen "File, Edit, Help"
var var MenuBar::actions()
, bu durumda QList büyüklüğü 3.
olduğunu kullandığınızda ben QMenuBar::findChildren<QObject*>()
'u kullan 6'nın QObject bir listesini aldım, menü çubuğunda doğru sayıda öğe var. Ancak, ben a
BOŞ değil tüm bu durumlarda QAction *
QAction *a = (QAction *)lst1.at(0);
QAction *a = qobject_cast<QAction*>(lst1.at(0));
QAction *a = dynamic_cast<QAction*>(lst1.at(0));
için dökme tryied, ama ben işlemi adı QAction::title()
almaya çalıştığınızda hep ben arızayı segmentasyon neden olur.
menü çubuğu eylemleri listesini aldıktan sonra, bir evet öğe bir QMenu ise eğer, bilmek (öğe bir menü ise geçerli bir QMenu işaretçi döndürür) QAction::menu()
sormak ki ben arama edilmiştir ve ben here bulundu biri, o menüdeki işlem listesini tekrarlayabilir ve yinelemeye devam edebilir. Ama bu benim için çalışmıyor, ben her menünün eylemlerin listesini almak, ama olabilir
QList<Object*> lst2 = QMenuBar::findChildren<QAction*>();
her öğe geçerli bir menü gösterici döndürür QAction::menu()
"Dosya, Düzen Yardım", yani için bunu yapar beklenmektedir Benim için hiç işe yaramıyor.
Vaktinizi ve yardımlarınızı gerçekten takdir ediyorum, umarım bu soru daha fazla insana yardım eder. Bununla gerçekten zor zamanlar geçiriyorum.
Şimdiden teşekkürler.
Ben sorunuzun biten bölümü hakkında emin değilim. 'QList list = menuBar() -> findChildren ();', yinelemeli bir işlev kullanarak yineleyebileceğiniz ve '-> actions()') öğelerini alabileceğiniz geçerli bir QMenü * listesi döndürür. Ne işe yaramaz? –
Hossein