【发布时间】:2013-09-14 20:22:27
【问题描述】:
Qt 版本 4.8.1,为 Windows 构建,我正在尝试获取辅助功能信息,以便我拥有的某些按钮可以正常工作。
我的主窗口中有一个 QPushButton,它有一个图标,因此:
m_restartBtn = new QPushButton();
QPixmap rpm(":/images/Restart32x32.png");
QIcon ricn(rpm);
m_restartBtn->setIcon(ricn);
m_restartBtn->setIconSize(rpm.rect().size());
// put it in a box in the main layout
QHBoxLayout *buttonBox = new QHBoxLayout;
ui->mainLayout->addLayout(buttonBox);
buttonBox->addWidget(m_restartBtn);
现在该按钮显示正确,如果我连接信号,它可以正常工作。但是当我使用“inspect.exe”(来自 Win 7 SDK)时,我看到该按钮出现了,但没有名称。
如果我使用 setText 而不是放入图标,则可访问的名称会正确显示,但当然,我看到的是文本,而不是我的图标。如果我两者都做,那么可访问的名称就可以正常工作,但正如人们所期望的那样,我会在屏幕上看到文本。
我试过 setObjectName 和 setWindowTitle 只是为了开怀大笑,但它们当然没有用。
是否有适当的方法为仅显示图标的 QPushButton 设置可访问名称?
我的直接目标是远程控制应用程序以实现可访问性。但我希望这项工作能够同时完成双重职责并让我完全可访问,因此我以后不必再为可访问性做单独的工作。
【问题讨论】:
-
我无法重现该问题。你用QWidget::setAccessibleName(const QString &name)设置了可访问的名字,对吧?
-
@thuga,为什么不将其发布为答案?我猜迈克尔不知道这种方法的存在,然后这就是他正在寻找的确切答案:-)
-
@Boris 我确实做到了,但后来我注意到他谈到设置可访问的名称,所以我想也许他确实使用了该功能,我决定删除我的答案。无论如何,我没有删除我的答案。
标签: windows qt accessibility