我有一个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 的重复项因为我正在寻找 Qt 特定功能来按名称访问 ui 成员,这似乎与“重复”问题非常不同。
最佳答案
您可以使用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);
}
}
我认为搜索时间的成本是相同的,但是,输入的成本比旧代码更有效。
关于c++ - 是否可以通过名称访问变量 UI 成员?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31641734/