我尝试了这个:

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的系统上,该图标将不会出现。

08-03 19:31