我有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);
}
这不是this question的重复,因为我正在寻找通过名称访问ui成员的Qt特定功能,这似乎与"重复"非常不同。问题
答案 0 :(得分:3)
您可以使用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;
}
}
}
正如@ Pie_Jesu的建议,我改变了代码,如下所示,
void ToolBarClass::changePushButton(QString buttonName, QColor color)
{
QPushButton *pButton = findChild<QPushButton *>( buttonName );
if ( pButton )
{
pButton->[however text color is changed](color);
}
}
我认为搜索时间的成本是相同的,但是,打字的成本比旧代码更有效。