我有按钮&当我button->text()
时,它返回'&'因为它有一个快捷方式,我们有按钮有时超过2&。
这是用于自动远程测试。编写测试的人不是程序员,也不知道对象名称。
QT如何在按钮上显示标签时没有额外的&符号?
可能的解决方案? :
qAbstractButton->text().replace(QRegExp("SomeRegex"), "");
答案 0 :(得分:1)
您不应该需要按钮的文字。您最有可能使用该文本来确定单击了哪个按钮。这是错的!你应该给按钮明智的对象名称。如果您在Qt Designer中设计UI,它们将被赋予名称。如果您自己编写代码,请使用setObjectName
设置名称。测试工具应检查焦点小部件的名称。
如果名称不是全局唯一的,则测试工具也可以使用父窗口小部件的名称,例如。
auto widget = qApp->focusWidget();
Q_ASSERT(widget->parent() && widget->parent()->objectName() == "...");
Q_ASSERT(widget->objectName() == "...");
有关使用对象名称和其他方法的编码示例,请参阅this answer。
答案 1 :(得分:0)
我最终使用了这个算法:
const QString labelOnButton = qAbstractButton->text();
QString fixedLabel;
int i = 0;
int lastIndex = labelOnButton.length() - 1;
while(i < lastIndex)
{
if (labelOnButton[i] == '&')
{
if (labelOnButton[i + 1] == '&')
{
fixedLabel += labelOnButton[i];
++i;
}
}
else
{
fixedLabel += labelOnButton[i];
}
++i;
}
if (labelOnButton[lastIndex] != '&')
{
fixedLabel += labelOnButton[lastIndex];
}
return fixedLabel;