QT:将 QDialog 作为对象传递
Posted
技术标签:
【中文标题】QT:将 QDialog 作为对象传递【英文标题】:QT: Passing QDialog as a object 【发布时间】:2013-12-19 06:24:55 【问题描述】:我是 QT 的新手。我的 QT 项目中有几个 QDialog。我创建了一个通用类来更改 QDialogs 中小部件的属性。我的通用类有一个 static 方法,它将改变小部件的属性。
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(s) 的字体大小。
【问题讨论】:
您可能希望obj
成为引用或指针:void MyClass::setFontsizeToWidgets(float modValue, QObject *obj)
。
没关系。但是从QDialog类调用这个方法时,如何将QDialog作为QObject的对象传递呢?
传递“这个”。一个 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);
【讨论】:
以上是关于QT:将 QDialog 作为对象传递的主要内容,如果未能解决你的问题,请参考以下文章