Как использовать Button_SetElevationRequiredState с QPushButton? - PullRequest
2 голосов
/ 23 марта 2012

Я попробовал это:

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

Однако не сработало.

1 Ответ

1 голос
/ 23 марта 2012

Я не уверен, сработает ли это, поскольку Qt на самом деле не использует нативные элементы управления, а выполняет пользовательскую отрисовку всего. Единственный способ, которым Windows поместит этот значок на кнопку, - это если вы используете окно с классом Button, то, что вы просите, чтобы оконный менеджер создал для вас.

Также обратите внимание, что для того, чтобы это работало, вы должны включить в свое приложение манифест для ссылки на 6-ю версию общих элементов управления (Comctl32.dll), но вы, вероятно, должны это делать, если вы поддерживаете Windows Vista и 7.

Но есть более простой способ сделать это, используя Qt, включающий QStyle:

QIcon shieldIcon = QApplication::style()->standardIcon(QStyle::SP_VistaShield);
openHostsPushButton->setIcon(shieldIcon);

В системах, не поддерживающих UAC, значок не появится.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...