2013-12-19 34 views
0

我是QT的新手。我的QT项目中有几个QDialogs。我创建了一个通用类来更改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类传递给上述静态方法?这样静态方法将改变QDialog中QPushButton的字体大小。

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