2015-07-26 5 views
2

У меня есть 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 пользователей по имени , который, по-видимому, сильно отличается от «дублированного» вопроса.

+2

Я подозреваю, что вам нужно реализовать это самостоятельно, используя результат findChildren() – drescherjm

ответ

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); 
     } 
    } 

Я думаю, что стоимость времени поиска такой же , однако, стоимость ввода более эффективна, чем старый код.

+0

, что может упростить огромную часть вашего примера, если 'findChildren' заменен на метод' findChild'. –

+0

@Pie_Jesu: Я изменил свой код. Спасибо за ваш совет. – hyun

Смежные вопросы