2013-12-19 3 views
0

Я новичок в QT. У меня есть несколько QDialogs в моем проекте QT. Я создал общий класс для изменения свойств виджетов внутри QDialogs. У моего родового класса есть статический метод , который изменит свойства виджетов.QT: Передача QDialog как объекта

void MyClass::setFontsizeToWidgets(float modValue, QObject obj) 
{ 
    QFont f; 
    float pointSize = 0.0; 

    QList<QPushButton*> buttons = obj.findChildren<QPushButton*>(); 

    foreach (QPushButton * button, buttons) 
    { 
     f = button->font(); 
     pointSize = f.pointSizeF(); 
     f.setPointSizeF(pointSize*modValue); 
     button->setFont(f); 
    } 
} 

Теперь мои вопросы в том, как передать QDialog как объект к выше статического метода из класса QDialog? Чтобы статический метод изменил размер шрифта QPushButton (s) в QDialog.

+0

Вы, вероятно, хотите 'obj' быть ссылка или указатель:' недействительные MyClass :: setFontsizeToWidgets (поплавок modValue, QObject * OBJ) '. – thuga

+0

Это нормально. Но когда вы вызываете этот метод из класса QDialog, как передать QDialog как объект QObject? – impulse

+0

Пройдите «это». QDialog QWidget - это QObject. Таким образом, вы можете передать QDialog * как QObject *. –

ответ

1

Вы можете сделать это следующим образом:

void MyClass::setFontsizeToWidgets(float modValue, QObject *obj) 
{ 
    //do something 
} 

void MyDialog::someFunction() //this is a function of your QDialog class 
{ 
    MyClass::setFontsizeToWidgets(10, this); 
}