C++ 是否可以访问名为的变量UI成员?

C++ 是否可以访问名为的变量UI成员?,c++,qt,C++,Qt,我有一个QWidget,我已经将它附加到QMainWindow的工具栏上。我想更改按钮激活时按钮文本的颜色。我意识到我可以为每个按钮创建一个方法(下面的示例),但我想知道是否可以创建一个使用所需按钮名称的方法(下面的伪代码) 更改特定按钮: void ToolBarClass::changeOKbutton(QColor color) { ui->pushbutton_ok->[however text color is changed](color); } 更改变量按钮

我有一个
QWidget
,我已经将它附加到
QMainWindow
的工具栏上。我想更改按钮激活时按钮文本的颜色。我意识到我可以为每个按钮创建一个方法(下面的示例),但我想知道是否可以创建一个使用所需按钮名称的方法(下面的伪代码)

更改特定按钮:

void ToolBarClass::changeOKbutton(QColor color)
{
    ui->pushbutton_ok->[however text color is changed](color);
}
更改变量按钮

void ToolBarClass::changePushButton(QString buttonName, QColor color)
{
    ui->[accessUImemberByName](buttonName)->[however text color is changed](color);
}

这不是的重复,因为我正在寻找通过名称访问ui成员的Qt特定功能,这似乎与“重复”问题非常不同。

您可以使用
QObject::objectName()
函数,如下所示

    void ToolBarClass::changePushButton(QString buttonName, QColor color)
    {
        QList< QPushButton* > listBtnAll = findChildren< QPushButton* >();
        for ( int i = 0; i < listBtnAll.size(); i++ )
        {
            if ( listBtnAll[ i ]->objectName() == buttonName )
            {
                listBtnAll[ i ]->[however text color is changed](color);
                break;
            }
        }
    }
void ToolBarClass::ChangeButton(QString按钮名称,QColor)
{
QListlistBtnAll=findChildren();
对于(int i=0;iobjectName()==buttonName)
{
listBtnAll[i]->[但是文本颜色发生了变化](颜色);
打破
}
}
}
按照@Pie_Jesu的建议,我更改了代码,如下所示

    void ToolBarClass::changePushButton(QString buttonName, QColor color)
    {
        QPushButton *pButton = findChild<QPushButton *>( buttonName ); 
        if ( pButton )
        {
            pButton->[however text color is changed](color);
        }
    }
void ToolBarClass::ChangeButton(QString按钮名称,QColor)
{
QPushButton*pButton=findChild(按钮名称);
如果(按钮)
{
pButton->[但是文本颜色发生变化](颜色);
}
}

我认为搜索时间的成本是相同的,但是,键入的成本比旧代码更有效。

我怀疑您需要自己使用findChildren()的结果来实现这一点。如果将
findChildren
替换为
findChildren
方法,您的示例的很大一部分可以简化。@Pie\u Jesu:我已经更改了代码。谢谢你的建议。