君莫笑

【Qt】QMdiSubWindow关闭后再打开的问题

这里要重点说明两点: 1.因为未知原因,QMdiSubWindow的关闭并没有销毁自身。也就是说,只要这个子窗口打开过,那么你查找它总是成功的(我不知道内存不足或者其他什么时候会不会被回收)。因此我只好判断这个窗口是不是可见。 2.因为第一点原因,恢复被关闭的子窗口时,窗口的MyPicBox居然不自动刷新了。然而重新复制生成一个显示图片的自定义QWidget又能正确显示出来,不知道为什么。比如MyPicBox是一个我自定义的图片显示控件,功能类似一个增强版的QLabel。如果我在多文档程序中,关闭了一个子窗口,当我重新打开这个子窗口时(temp就是指向这个要显示的子窗口的指针),我又必须重新生成一个MyPicBox,然后设置好属性;再让重获新生的QMdiSubWindow的setW放进去。很是郁闷。 MyPicBox* newPicBox = new MyPicBox(this); newPicBox->setImagePath(tempPicBox->getImagePath()); newPicBox->setThumbnail(tempPicBox->getThumbnail()); newPicBox->setDataSet(tempPicBox->getDataSet()); newPicBox->setBandOrder(tempPicBox->getBandOrder()); temp->setWidget(newPicBox); //找到tempPicBox指向的位置,然后移除它,将新的PicBox放入 int position = this->openedPicBox.indexOf(tempPicBox); this->openedPicBox.remove(position); this->openedPicBox.insert(position,newPicBox); //干掉临时指针 tempPicBox = NULL; delete tempPicBox; temp->show();

评论

热度(4)