c ++ - Sådan bruges Button\_SetElevationRequiredState med QPushButton?

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg prøvede dette:


QPushButton* openHostsPushButton = new QPushButton("Open Hosts");
Button\_SetElevationRequiredState(openHostsPushButton->winId(), true);
openHostsPushButton->setMaximumSize(aPushButtonMaxSize);
connect(openHostsPushButton, SIGNAL(clicked()),
        this, SLOT(openHostsClicked()));


Men fungerede ikke.

Bedste reference


Jeg er ikke sikker på, om dette vil fungere, da Qt ikke bruger indfødte kontroller, men ret brugerdefinerede trækker alt. Den eneste måde, som Windows vil placere ikonet på en knap, er, hvis du bruger et vindue med klassen Button, noget du beder vindueslederen om at oprette for dig.


Bemærk også, at for at dette skal fungere, skal du have inkluderet et manifest med din ansøgning for at linke til version 6 af de fælles kontroller (Comctl32.dll), men du skal nok gøre det allerede, hvis du understøtter Windows Vista og 7.


Men der er en nemmere måde at gøre ved hjælp af Qt, der involverer QStyle: [5]


QIcon shieldIcon = QApplication::style()->standardIcon(QStyle::SP\_VistaShield);
openHostsPushButton->setIcon(shieldIcon);


På systemer, der ikke understøtter UAC, vises ikonet ikke.