繁体   English   中英

如何从按钮文本qt中安全删除

[英]How to remove & safely from button text qt

我有&的按钮,当我执行button->text() ,它以'&'返回,因为它有一个快捷方式,有时我们的按钮有两个以上的&。

这是用于自动远程测试。 编写测试的人不是程序员,也不知道对象名称。

在按钮上显示多余的“&”符号时,QT如何处理?

可能的解决方案?

qAbstractButton->text().replace(QRegExp("SomeRegex"), "");

您永远不需要按钮的文本。 您最有可能使用文本来确定单击了哪个按钮。 这是错的! 您应该给按钮提供合理的对象名称。 如果您在Qt Designer中设计UI,则已经为它们指定了名称。 如果您自己编写代码,请使用setObjectName设置名称。 测试工具应检查聚焦的小部件的名称。

如果名称不是全局唯一的,那么测试工具也可以使用父窗口小部件的名称,例如

auto widget = qApp->focusWidget();
Q_ASSERT(widget->parent() && widget->parent()->objectName() == "...");
Q_ASSERT(widget->objectName() == "...");

有关使用对象名称和其他方式的编码示例,请参见此答案

我最终使用了这种算法:

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;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM