簡體   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