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