2012-02-29 22 views
12

bir menü öğesinin dışarı gri nasıl C++ kullanarak menü çubukları (menuBar) ile Qt küçük bir program yapıyorum ve ben (örneğin devre dışı bırakma) menü öğesinin bir öğenin gri nasıl olacağını bilmek istiyorum belirli bir değişken aktive edilir. Mümkün mü?Nasıl Qt

cevap

14

karşılık gelen QAction bir dizin biliyorsanız:

QMenu::actions.at(i).setEnabled(false); 

Not; Aşağıda belirtildiği gibi, setEnabled(bool) ve setDisabled(bool) yuvalardır (bu nedenle toggle()), böylece eylemin kullanılabilirliğini değiştirme gereksinimini gösteren bir sinyale bağlanabilirler.

+2

Sen cevabınıza ekleyebilirsiniz ile menü öğesi ortadan yapabilirsiniz 'o setEnabled (bool) 've' setDisabled (bool) 'yuvalarıdır (yani' toggle() '), böylece eylemin kullanılabilirliğini değiştirme ihtiyacını gösteren bir sinyale bağlanabilirler. –

+0

Thanx @LucTouraille! –

+2

Eğer değişken sık sık değişiyorsa (menüden daha sık gösterilir), sadece “signal: QMenu :: aboutToShow()'; yine de görünmez olan bir şeyi değiştirmenin hiçbir anlamı yok. – MSalters

5

Eylem endeksi aranan uygun değildir. Eğer arayüzü QtCreator'ın form düzenleyicisi ile oluşturduysanız, her menü öğesi için bir eyleminiz olacaktır. İsimleri, ilk olarak eylemlere verdiğiniz metne dayanır. Örneğin, interaktif olarak Foo Bar başlığına sahip bir menü öğesi girerseniz, sizin için actionFoo_Bar adında bir eylem oluşturulur. Sadece kod düzenleyicide ui-> eylemini yazın ve QtCreator'ın ne önereceğini "ad tamamlama" nı izleyin. Böyle bir çağrı ele alacak Böyle bir durumda

:

ui->actionFoo_Bar.setEnabled(false); 

Hatta

ui->actionFoo_Bar.setVisible(false);