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 作为对象传递的主要内容,如果未能解决你的问题,请参考以下文章

CORBA:如何将 QT 对象作为参数传递

QT之对话框

Qt--对话框及其类型布局管理器

8.QT-对话框(模态与非模态)

为啥虚拟键盘不适用于 Qt 中的 QDialog 文本框?

QT开发(二十)——QT对话框