我试过了:
QPushButton* openHostsPushButton = new QPushButton("Open Hosts");
Button_SetElevationRequiredState(openHostsPushButton->winId(), true);
openHostsPushButton->setMaximumSize(aPushButtonMaxSize);
connect(openHostsPushButton, SIGNAL(clicked()),
this, SLOT(openHostsClicked()));
然而没效果。
答案 0 :(得分:1)
我不确定这是否可行,因为Qt实际上并不使用本机控件,而是自定义绘制所有内容。 Windows将该图标放在按钮上的唯一方法是使用类Button
的窗口,这是您要求窗口管理器为您创建的窗口。
另请注意,为了使其正常工作,您必须在应用程序中包含一个清单,以链接到通用控件的第6版(Comctl32.dll) - 但如果您支持,您可能应该已经这样做了Windows Vista和7.
但使用Qt涉及QStyle
:
QIcon shieldIcon = QApplication::style()->standardIcon(QStyle::SP_VistaShield);
openHostsPushButton->setIcon(shieldIcon);
在不支持UAC的系统上,图标不会出现。