如何引用的形式和改变属性(高度和宽度)从一个函数在Qt

How to reference a form and change properties (height and width) from a function in Qt

本文关键字:一个 函数 Qt 改变 引用 何引用 属性 高度      更新时间:2023-10-16

我从Qt开始尝试从VB6迁移。现在我试图从一个函数改变窗口(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);
                   ^
我不知道解决我的问题的最好方法是什么。有没有一种方法来创建一个公共指针和改变任何属性的形式,或类似的东西?

感谢您花时间阅读我的问题,如有任何帮助,我将不胜感激。

首先,您正在尝试将指针传递给该方法,因此您需要调整该方法以接受这些指针。其次,我不确定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());
}