本文整理汇总了C++中QMdiArea::currentSubWindow方法的典型用法代码示例。如果您正苦于以下问题:C++ QMdiArea::currentSubWindow方法的具体用法?C++ QMdiArea::currentSubWindow怎么用?C++ QMdiArea::currentSubWindow使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类QMdiArea
的用法示例。
在下文中一共展示了QMdiArea::currentSubWindow方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: closeEvent
void RMdiChildQt::closeEvent(QCloseEvent* closeEvent) {
// ask before closing (document was modified):
if (documentInterface != NULL) {
emit closeRequested(this);
}
else {
closeEvent->accept();
return;
}
// close canceled:
if (!closeEventAccepted) {
closeEvent->ignore();
return;
}
if (documentInterface != NULL) {
if (diLast==documentInterface) {
diLast = NULL;
}
// 20130510: leads to empty layer list, etc when
// closing background tab
//RMainWindowQt::getMainWindow()->notifyListeners(true);
// make sure rulers don't try to access view anymore:
QList<RRulerQt*> rulers = findChildren<RRulerQt*>();
for (int i=0; i<rulers.size(); i++) {
rulers.at(i)->setGraphicsView(NULL);
}
// give current action a chance to clean up:
RAction* action = documentInterface->getCurrentAction();
if (action!=NULL) {
action->suspendEvent();
}
RDocumentInterface* di = documentInterface;
documentInterface=NULL;
delete di;
di = NULL;
}
closeEvent->accept();
#ifndef Q_OS_WIN32
// part of the workaround for QMdiArea bug
// with events filtering through all stacked windows:
QMdiArea* mdiArea = RMainWindowQt::getMainWindow()->getMdiArea();
QMdiSubWindow* child = mdiArea->currentSubWindow();
QList<QMdiSubWindow *> children = mdiArea->subWindowList(QMdiArea::ActivationHistoryOrder);
int index = children.indexOf(child);
int nextIndex = children.length()-2;
nextIndex = nextIndex%children.length();
if (nextIndex!=index) {
children.at(nextIndex)->showMaximized();
mdiArea->setActiveSubWindow(children.at(nextIndex));
}
#endif
}
示例2: closeEditBlockWindow
/**
* Closes all windows that are editing the given block.
*/
void QC_DialogFactory::closeEditBlockWindow(RS_Block* block) {
RS_DEBUG->print("QC_DialogFactory::closeEditBlockWindow");
QC_ApplicationWindow* appWindow = QC_ApplicationWindow::getAppWindow();
QMdiArea* mdiAreaCAD = appWindow->getMdiArea();
if (mdiAreaCAD==NULL) return; //should not happen
RS_DEBUG->print("QC_DialogFactory::closeEditBlockWindow: workspace found");
for (int i = 0; i <mdiAreaCAD->subWindowList().size(); ) {
RS_DEBUG->print("QC_DialogFactory::closeEditBlockWindow: window: %d",
i);
QC_MDIWindow* m = qobject_cast<QC_MDIWindow*>(mdiAreaCAD->subWindowList().at(i));
if(m==NULL) {
mdiAreaCAD->removeSubWindow(mdiAreaCAD->subWindowList().at(i));
continue;
}
RS_DEBUG->print(
"QC_DialogFactory::closeEditBlockWindow: got mdi");
if (m->getDocument()==block) {
RS_DEBUG->print(
"QC_DialogFactory::closeEditBlockWindow: closing mdi");
appWindow->slotFilePrintPreview(false);
m->closeMDI(true, false);
mdiAreaCAD->removeSubWindow(mdiAreaCAD->subWindowList().at(i));
continue;
// m->setAttribute(Qt::WA_DeleteOnClose);//RLZ: to ensure the window is deleted
// m->close();
}
i++;
}
//activate a subWindow, bug#3486357
QMdiSubWindow* subWindow=mdiAreaCAD->currentSubWindow();
appWindow->slotWindowActivated(subWindow);
RS_DEBUG->print("QC_DialogFactory::closeEditBlockWindow: OK");
}