如何将Button_SetElevationRequiredState与QPushButton一起使用?

时间:2012-03-23 03:35:28

标签: c++ windows qt winapi

我试过了:

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

然而没效果。

1 个答案:

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