我开始尝试从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);
^
我不知道哪种方法可以解决我的问题。有没有办法创建一个公共指针并更改该表单的任何属性,或类似的东西?
感谢您花时间阅读我的问题,我们将不胜感激。
答案 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());
}