qt4.7 - I en Qt-applikation under Windows vælges den forkerte knap som standard

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg har udviklet en desktop applikation ved hjælp af Qt Creator under Linux (Kubuntu).
Under Linux er alt godt, men i Windows, i en dialogboks vælges den forkerte knap som standard, når vinduet vises.


Der er tre knapper: Rediger, Fortsæt og Stop.


Fortsæt er markeret som 'AutoDefault' og 'Default'.


Stop er markeret som 'AutoDefault', men ikke 'Deafault'.


Redigeringen er markeret som hverken 'AutoDefault' eller 'Default', men når dialogen åbnes, er den valgt, og tryk på enter trykker på knappen Edit.


Kilden til programmet findes på https://github.com/megamasha/FlashKard for alle, der ønsker at prøve det selv. Det pågældende vindue genereres fra filen 'resultswindow.ui'. [5]


Er det bare mig? Er det en fejl? Bare spekulerer på, om nogen kan se nogen åbenbar grund til, at dette ikke virker (eller måske virker det bare ikke på mit Windows Vista-system)

Bedste reference


Om QPushButton::default:



  En knap med denne egenskab indstilles til sand (dvs. dialogens standard
  knappen) vil automatisk blive trykket når brugeren trykker ind,
  med en undtagelse: hvis en autoDefault-knap i øjeblikket har fokus,
  Knappen AutoDefault trykkes.



Og vigtigere:



  Kommando knapper i dialoger er som standard auto-standard knapper, dvs.
  De bliver automatisk standardknappen, når de modtager
  tastaturets indgangsfokus.



Medmindre du udtrykkeligt sætter editButton 's autoDefault til falsk, er det sandt. Der kan være nogle Windows-specifikke faktorer involveret (uden yderligere hints, fokuserer Windows kontrollen med det laveste ID, hvilket sandsynligvis er sagen for editButton, siden den blev oprettet først).
Prøv enten at indstille autoDefault til falsk eller udtrykkeligt ringe til continueButton.setFocus()