Fa via App Store Les dette innlegget i var app!

Tilpassede menyhandlinger i Qt Designer.

Jeg prover for tiden a bruke Qt Designer for a bygge en GUI, og jeg vil gjerne tilpasse spor av menyhandlingene mine.

E-g: Jeg vil at brukeren skal trykke pa en menyhandling, og det vil vise en widget hvis den er skjult eller skjul den hvis den allerede er synlig.

I utgangspunktet, hva jeg vil gjore er a utfore noen kode av meg og ikke standardhandlinger som show () eller hide ().

Sa jeg lurer pa om jeg skulle lage en underklasse av QMenuBar, legge til tilpassede spor til den, og opprett et plugin for a bruke det inne Qt Designer eller hvis jeg skulle lage en underklasse for QMenu eller QAction? Eller er det kanskje ikke den riktige maten a gjore det pa?

Jeg jobber under Visual Studio, og jeg bruker bare Qt Designer, ikke Qt-skaperen.

Jeg er ny pa GUI og Qt programmering, og jeg er litt tapt her.

Takk pa forhand 🙂

Du har i utgangspunktet to alternativer:

Implementer den egendefinerte logikken i Mainwindow sublcass.

For dette legger du rett og slett de sporene som kreves for handtering i klassen, og gjor dem tilgjengelige i Qt Designer. Du far til dette:

enten i Signal / Slot editor og klikk «Modify» og klikk deretter pa + Symbol. Ved dette lager du nye spor i QtDesigner;

eller nar sporet ditt kalles pa (sendernavn) _ (signalnavn), kobler Qt autowiring automatisk signalene, og du trenger ikke a gjore dette i kode eller desinger.

Lag en QMenuBar-underklasse og implementer den tilpassede logikken der.

Din sak forteller Qt Designer a velge spesifikk underklasse som erstatning for standard QMenuBar ved a hoyreklikke pa den, og velg «Marker til.». I den nye dialogboksen kan du angi egendefinert klasse som skal brukes som erstatning i faktisk kode, men i designtid brukes en QMenuBar. Med denne mehtoden trenger du ikke a skrive et eget plugin for a gjore klassen din tilgjengelig i Qt Designer.

Merk at med det andre alternativet, blir din egendefinerte logikk bare kalt nar handlingene utloses gjennom menylinjen, ikke ved hjelp av snarveier eller verktoyknapper.

Menylinjen blir automatisk lagt til i hvilken som helst ny form som er avledet fra QMainWindow (standard nar du lager et gui-program, men du kan opprette nye hovedvinduer ved hjelp av fil-> ny fil eller prosjekt. Og velge Qt-> Qt Designer Form Class).

For a legge til alternativer til det, klikker du bare i omradet merket «Type her» og skriv inn alternativteksten. Nar du gjor det, vises en handling i en liste i den nedre delen av Qt Designer. Hoyreklikk pa den handlingen og velg «ga til spor«. Det vil dukke opp en dialog med «utlost ()» allerede valgt for deg. Bare klikk «Ok» og Qt Creator vil ta vare pa alle detaljer og transportere deg til kroppen til sporet-funksjonen.

Lag et spor i din klasse:

Bruk koblingen () for a reagere pa handlingens signal:

I din plass kan du gjore hva du vil.

En annen losning (ikke min favoritt, men mulig) er a bruke automatisk tilkoblingsfunksjonalitet, som betyr at ved a deklarere et spor ‘on_myAction_triggered ()’ (der myAction er navnet pa QAction), trenger du ikke a bruke Koble til () siden den er koblet automatisk til Qt.