Qt Forum.

Problem med tilkoblingsmetoden i Qt5.

Jeg prover a fa dette eksemplet til a lope.

Det kaller denne medlemsfunksjonen i MainWindow-klassen som er avledet fra QMainWindow-klassen.

Apen er en privat funksjon.

Imidlertid far jeg folgende feil.

Feil: Ugyldig bruk av ikke-statisk medlemsfunksjon.

QObject :: connect (openAction, & QAction :: utlost, dette, ViewerImage :: open);

Hva mangler jeg her? Det er et Qt5 eksempel og jeg bruker Qt5.

Du mangler en ampersand:

Koble til (openAction, & QAction :: utlost, denne, og ViewerImage :: apen);

Embedded Graphics & amp; GUI bibliotek: https://ugfx.io.

@Sewing Lastet kilden til det eksemplet og bygget det pa Windows 7 med Qt 5.9 + MinGW – ikke noe problem.

Kompilerer du kilden eller kopierer / limer du koden fra eksemplet?

Sa for a v re klar sier du at kildekoden din har:

QObject :: connect (openAction, & QAction :: utlost, dette, MainWindow :: apen);

og kompilatorfeilen rapporterer linjen som:

QObject :: connect (openAction, & QAction :: utlost, dette, ViewerImage :: open);

? Og feilen gjelder kildekoden du viser?

@JNBarchan Jeg antar det er et enkelt kopi-lime problem fra eksempelkode vs sin egen kode. Under alle omstendigheter savner han absolutt ampersand – dermed kompilasjonsfeilen med hensyn til den ikke-statiske medlemsfunksjonen.

Embedded Graphics & amp; GUI bibliotek: https://ugfx.io.

@ Joel-Bodenmann Nei, dette er ikke et problem, & amp; er valgfritt for funksjon / metode pointers. Og feilmeldingen sier at tilkoblingen ikke er statisk – den klager ikke over apen ().

Det er slik i kildekoden for eksempel og det kompilerer helt fint.

Jeg tror han bare glemte noe som en inkludere.

Sa hvis hans kode er forskjellig fra proven koden han kopierer fra, blir vi ikke fortalt det?

Jeg kan ikke se hva du mener om den manglende ampersand, siden provekoden ikke har den:

og @jsulm sier at han kan laste ned og bygge det uten problem.

Min darlige, beklager folk!

Embedded Graphics & amp; GUI bibliotek: https://ugfx.io.

takk fyrene for din hjelp og unnskyldninger for min skrivefeil. Hvis du legger til ampersand, loste du problemet, selv om jeg ikke far hvorfor siden funksjonsnavn regnes som adressene mine til min kunnskap.

Dette er den nye koble syntaksen riktig? Den gamle baserte seg pa SIGNAL og SLOT-makroene.

QObject gir folgende overbelastninger.

I folge QtCreator bruker jeg den andre (referanse til QMetaMethod), men hvorfor jeg trenger a bruke en ampersand, er over meg.

@Sewing Interessant, her samles koden uten endringer (uten &).

Hvilken kompilator bruker du?

Forutsatt at koden hans faktisk bruker ViewerImage :: apne istedenfor MainWindow :: apen, trenger vi ikke a forklare den tidligere?

@ jsulm: gcc 5 og Qt-5.5.

btw: det samme problemet ser ut til a virke for.

som ikke samsvarer med den eneste levedyktige addAction overloaden i qmenu.h.

Selv om dette eksemplet er hentet fra den offisielle QT-nettsiden. Mangler jeg noe her, er min Qt-versjon ikke i samsvar med koden eller hva synes a v re problemet?

Er din ImageViewer :: apne en karbon? Som jeg sa for, trenger vi ikke a vite hva din definisjon av ImageViewer :: er apen for vi begynner a finne ut hvordan det samsvarer med deklarasjonsprototyper? OK, kanskje jeg er litt pedantisk / dum, kan jeg anta at det er en funksjon?

Den overbelastningen ser ikke ut som den «bare» en tilgjengelig. Hva med:

Jeg tror du kan ogsa trenge a lese https://isocpp.org/wiki/faq/pointers-to-members#fnptr-vs-memfnptr-types for a beskrive Er typen «peker-til-medlem-funksjon» forskjellig fra �pekeren-til-funksjonen�?

Alt dette kan v re hvorfor vi trenger a vite den noyaktige definisjonen av ImageViewer :: Apne versus eksempelets MainWindow :: apne?

takk for hjelpen gutta =)

Apen er en funksjon, og signaturen ser ut.

i qmenu.h overbelastningene jeg har er.

Hva er forskjellen mellom addAction og connect?

Jeg gjor ikke C ++ / headerfiler, men er du sikker pa at det ikke er noen ekstra overbelastninger, kanskje et sted borte fra de du viser, for addAction ()? De trenger ikke alle a v re ved siden av hverandre.

For addAction vs connect:

En meny bestar av en liste over handlingsobjekter. Handlinger legges til med addAction (), addActions () og insertAction () funksjoner.

QMenu-klassen inneholder bekvemmelighetsfunksjoner for a skape handlinger som er egnet for bruk som menyelementer.

En QAction kan inneholde et ikon, menytekst, en snarvei, statustekst, «Hva er dette?» tekst og et verktoytips.

QAction * QMenu :: addAction (const QIcon og ikon, const QString og tekst, const QObject * mottaker, const char * medlem, const QKeySequence og snarvei = 0)

Denne bekvemmelighetsfunksjonen oppretter en ny handling med et ikon og litt tekst og en snarvei snarvei. Tiltakets utloste () signal er koblet til medlemslasen til mottakerobjektet. Funksjonen legger til den nylig opprettede handlingen til menyens liste over handlinger, og returnerer den.

En addAction () bryter opp tillegget av et element pa en meny og forening av sporet ved a klikke (utlost () signal) det elementet.

Hvilken kompilator bruker du?

g ++ krever at du skriver ampersand, selv om det strengt ikke bor v re nodvendig. Dette:

og har v rt slik i sa lenge jeg kan huske.

Selv om vi aksepterer, som det grunnleggende prinsippet om ekte demokrati, er den ene moronen lik ett geni, er det nodvendig a ga et skritt videre og hold fast at to moroner er bedre enn ett geni?

takk for hjelpen gutta =)

Apen er en funksjon, og signaturen ser ut.

i qmenu.h overbelastningene jeg har er.

Hva er forskjellen mellom addAction og connect?

Vel, jeg antar jeg fant problemet. Jeg bruker Qt 5.5.1 via systemet Pakker pa Xubuntu 16.04. Imidlertid ble den nodvendige overbelastede veersjon av addAction introdusert i Qt 5.6 i henhold til API.

Hvordan kan jeg fa Qt 5.6 uten a matte installere det selv fra Source?

Er det en oppdatering pa systemet Pakker som enna inneholder denne nyere Qt versjonen?

Ok, ikke sikker pa hvordan du kobler til denne installasjonen i min Cmake Project though = /

med Qt5.5 brukte jeg bare find_package kommando.

@Sewing Bor v re det samme: Bare velg Kit for denne nye Qt-versjonen og kjor deretter cmake.

Ser ut som din forbindelse til Qt Forum var tapt, vent mens vi forsoker a koble til igjen.