2011-03-19 16 views
14

Qt'ye yeni çıkıyorum ve şu anda Qt Creator ve raw C++ kodu ile oynamaktayım. Her ikisine de QAction nesnesi ekleyerek bir menü ve araç çubuğu da dahil olmak üzere bazı basit işlevsellikler çalışmayı başardım. Ancak, bazı zorluklar yaşıyorum:Qt 4.7'de, bir açılır menü QToolbar düğmesine nasıl eklenebilir?

Yapmak istediğim, bir alt menüye sahip bir menü seçeneğine sahip olmak; Yeni, bir öğe coupewe ile bir alt menü ile ve bu QToolbar üzerinde çoğaltın. Menüde bunu yönetdim: QMenu olarak Yeni ve QAction nesneleri olarak alt menü öğeleri. Bunu araç çubuğunda nasıl çalıştıracağımı göremiyorum, ör. tıklandığında, "varsayılan" QAction'ı (ilk alt menü öğesi gibi) çalıştıracak, ancak diğer tüm seçenekleri sunan sağdaki küçük bir menü düğmesi olan yeni bir düğme. Bunun, Office araç çubuklarındaki Geri Al/Yinele düğmelerine benzer olduğunu varsayalım. Bu yardımcı olur

QMenu *menu = new QMenu(); 
QAction *testAction = new QAction("test menu item", this); 
menu->addAction(testAction); 

QToolButton* toolButton = new QToolButton(); 
toolButton->setMenu(menu); 
toolButton->setPopupMode(QToolButton::InstantPopup); 
toolBar->addWidget(toolButton); 

umut, Zaten QToolButton görünüyor

cevap

2

ilgili: Aşağıdaki örnek sizin için çalışacak olsaydı ve

2

serge_gubenco'nun cevabı, pencerenin daha küçük boyutta yeniden boyutlandırılması gerektiğinde ve Qt açılır pencerede QToolButton kendisini koymak için çalışır. Bunu yapamayabilir. Bkz. http://doc.qt.io/archives/qt-4.7/qtoolbar.html.

Çözüm, aşağıdaki gibi değiştirilmiş bir snippet'te hızlı bir QWidgetAction kullanmaktır.

QMenu *menu = new QMenu(); 
QAction *testAction = new QAction("test menu item", this); 
menu->addAction(testAction); 

QToolButton* toolButton = new QToolButton(); 
toolButton->setMenu(menu); 
toolButton->setPopupMode(QToolButton::InstantPopup); 

QWidgetAction* toolButtonAction = new QWidgetAction(this); 
toolButtonAction->setDefaultWidget(toolButton); 

toolBar->addAction(toolButtonAction); 
İlgili konular