• 9558阅读
  • 1回复

跪求:QMdiArea实现的多窗口,子窗口切换时实现操作 [复制链接]

上一主题 下一主题
离线zsw8766
 

只看楼主 倒序阅读 楼主  发表于: 2010-06-19
用QMdiArea实现多窗口,子窗口MdiChild继承于QWebView,有的显示图片,有的显示报表。可同时显示多个子窗口,由当前子窗口切换到另一个窗口时,我要实现某些操作。
请问 是用QMdiArea的信号subWindowActivated(QMdiSubWindow*)吗?
上面的操作,可以实现了,但出现了一个很奇怪的小bug,当我点击QtCreator程序在任务栏(桌面上的)上的图标时,却提示错误,程序就死掉。点击其他正在运行程序在任务栏的图标时,也会这样。经过调试,提示错误如下


请问,是哪的问题
部分关键代码如下:

QObject::connect(this->mdiArea,SIGNAL(subWindowActivated(QMdiSubWindow*)),this,SLOT(showfginfo(QMdiSubWindow*)));
...............................
void MainWindow::showfginfo(QMdiSubWindow * sw)
{
   MdiChild *mc=this->activeMdiChild();
   if(mc->windowtype==1||mc->windowtype==3||mc->windowtype==0)   //windowtype=1代表显示报表表,2代表图片.................
   {
        this->fgrInfoWiget->hide();
        this->dockFgrDpctWidget->hide();
   }
    else if(mc->windowtype==2)
    {
       this->fgrInfoWiget->setFGinfo(mc->fgdpct,mc->fgeva);
        this->fgrInfoWiget->show();
        this->dockFgrDpctWidget->show();
   }

}
................................................
MdiChild *MainWindow::activeMdiChild()
{
    if (QMdiSubWindow *activeSubWindow = mdiArea->activeSubWindow())
    {
        return qobject_cast<MdiChild *>(activeSubWindow->widget());
    }
    return 0;
}
[ 此帖被zsw8766在2010-06-19 23:22重新编辑 ]
离线javaprograms
只看该作者 1楼 发表于: 2011-03-14
做个标签
快速回复
限100 字节
 
上一个 下一个