如何引用表单并更改Qt中函数的属性(高度和宽度)

时间:2014-05-29 23:06:12

标签: c++ forms qt qt-creator qt5

我开始尝试从VB6迁移Qt。现在我正在尝试从函数中更改窗口(UI窗体)的大小,因此在打开窗体的操作中执行此操作之前,我执行此操作:

void F::on_actionCte_triggered()
{
    Frm_ABM_Ctes *W = new Frm_ABM_Ctes(uF->mdiArea);
    W->setAttribute(Qt::WA_DeleteOnClose);
    W->setWindowState(Qt::WindowMaximized);
    W->showNormal();
    int Hi = (this->height()/3) - (W->height()/3);
    int Wi = (this->width()/3) - (W->width()/3);
    W->setGeometry(Wi,Hi,W->width(),W->height());
}

这很好用,我的想法是,如果我要做很多表单,我想调用一个函数来改变子表单的几何属性。像:Function(Parent,child)然后在我的函数中使用Parent和Child作为动态对象(就像我在visual basic或VS中那样)

所以我这样做了:

void F::on_actionCte_triggered()
{
    Frm_ABM_Ctes *W = new Frm_ABM_Ctes(uF->mdiArea);
    W->setAttribute(Qt::WA_DeleteOnClose);
    W->setWindowState(Qt::WindowMaximized);
    W->showNormal();
    FormS(This,W)
}

FormS文件位于*.h文件中(我当然包括哪个文件),并且如下所示:

void FormS(QMainWindow Par, QMdiSubWindow Chi)
{
    int Hi = (Par.height()/3) - (Chi.height()/3);
    int Wi = (Par.width()/3) - (Chi.width()/3);
    Chi.setGeometry(Wi,Hi,Chi.width(),Chi.height());
}

它给出了

error: could not convert 'this' from 'F* const' to 'QMainWindow'
     FormS(this,W);
                   ^

我不知道哪种方法可以解决我的问题。有没有办法创建一个公共指针并更改该表单的任何属性,或类似的东西?

感谢您花时间阅读我的问题,我们将不胜感激。

1 个答案:

答案 0 :(得分:1)

首先,您正在尝试将指针传递给此方法,因此您需要调整方法以获取这些指针。其次,我不确定F是什么(你还没有显示声明),但如果它是QMainWindow子类,那么这样就可以正常工作了:

void FormS(QMainWindow *Par, QMdiSubWindow *Chi)
{
    int Hi = (Par->height()/3) - (Chi->height()/3);
    int Wi = (Par->width()/3) - (Chi->width()/3);
    Chi->setGeometry(Wi, Hi, Chi->width(), Chi->height());
}