การเพิ่มรายการเมนูใหม่ไปยังแอป QGIS Desktop?


14

ฉันต้องเพิ่มรายการเมนูใหม่ลงในเมนูระดับบนสุดของ QGIS Desktop (2.7.0); นั่นคือจะต้องอยู่ในระดับเดียวกับ "Project", "Edit", "View", "Layer" เป็นต้น

เท่าที่ฉันรู้มีวิธีที่ดีในการซ่อนรายการเมนู (การตั้งค่า> การปรับแต่ง) และการใช้ QgisInterface ( http://qgis.org/api/classQgisInterface.html ) ฉันสามารถเพิ่มรายการใหม่ลงในเมนู QGIS ได้แล้ว ( addLayerMenu, addPluginToDatabaseMenu ฯลฯ ) จากรหัสปลั๊กอินของฉัน

แต่ฉันต้องการรายการเมนูใหม่ที่เลเยอร์บนสุด (นี่คือคำขอจากลูกค้า)

คำตอบ:


22

คุณสามารถเพิ่มเมนูที่กำหนดเองลงใน QGIS GUI ได้ด้วยวิธีนี้:

self.menu = QMenu( "&My tools", self.iface.mainWindow().menuBar() )
actions = self.iface.mainWindow().menuBar().actions()
lastAction = actions[-1]
self.iface.mainWindow().menuBar().insertMenu( lastAction, self.menu )

ดังที่คุณเห็นในข้อมูลโค้ดด้านบนคุณกำลังเพิ่มเมนูในตำแหน่งที่สองถึงตำแหน่งสุดท้ายของแถบเมนูด้านขวาHelpถัดจากเมนู

ป้อนคำอธิบายรูปภาพที่นี่

จากนั้นคุณสามารถเพิ่มการกระทำในเมนูที่เพิ่มใหม่ของคุณด้วยวิธีนี้:

self.menu.addAction( self.action )

คุณอาจรู้อยู่แล้ว แต่เพื่อให้ชัดเจนการกำหนดค่า GUI ดังกล่าวควรอยู่ในinitGui()วิธีของปลั๊กอินของคุณ


1
คำตอบที่ดี (ทุกคนรักหน้าจอ!) อย่าลืมที่จะนำเข้า QMenu ในตอนแรก ...
mozzbozz
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.