【问题标题】:How do I set the accessibility name for a QPushButton that just has an icon?如何为只有图标的 QPushButton 设置可访问性名称?
【发布时间】: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 而不是放入图标,则可访问的名称会正确显示,但当然,我看到的是文本,而不是我的图标。如果我两者都做,那么可访问的名称就可以正常工作,但正如人们所期望的那样,我会在屏幕上看到文本。

我试过 setObjectNamesetWindowTitle 只是为了开怀大笑,但它们当然没有用。

是否有适当的方法为仅显示图标的 QPushButton 设置可访问名称?

我的直接目标是远程控制应用程序以实现可访问性。但我希望这项工作能够同时完成双重职责并让我完全可访问,因此我以后不必再为可访问性做单独的工作。

【问题讨论】:

  • 我无法重现该问题。你用QWidget::setAccessibleName(const QString &name)设置了可访问的名字,对吧?
  • @thuga,为什么不将其发布为答案?我猜迈克尔不知道这种方法的存在,然后这就是他正在寻找的确切答案:-)
  • @Boris 我确实做到了,但后来我注意到他谈到设置可访问的名称,所以我想也许他确实使用了该功能,我决定删除我的答案。无论如何,我没有删除我的答案。

标签: windows qt accessibility


【解决方案1】:

您可以使用QWidget::setAccessibleName(const QString &name)

QPushButton *button = new QPushButton(this);
button->setAccessibleName("name");

这就是你要找的吗?

【讨论】:

  • 我太专注于 QObject 以至于没有仔细检查 QWidget。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-02-08
  • 1970-01-01
  • 1970-01-01
  • 2023-03-08
  • 1970-01-01
  • 1970-01-01
  • 2018-09-07
相关资源
最近更新 更多