void MdiWindow::mouseDoubleClickEvent(QMouseEvent *event) { QStyleOptionTitleBar option; option.initFrom(this); option.titleBarFlags = windowFlags(); option.titleBarState = windowState(); option.subControls = QStyle::SC_All; option.activeSubControls = QStyle::SC_None; if (!isMinimized()) { option.rect.setHeight(height() - widget()->height()); } if (style()->subControlRect(QStyle::CC_TitleBar, &option, QStyle::SC_TitleBarLabel, this).contains(event->pos())) { setWindowFlags(Qt::SubWindow | Qt::CustomizeWindowHint | Qt::FramelessWindowHint); showMaximized(); } }
//_______________________________________________________________________ void Simulator::click( QWidget* receiver, int delay ) { QPoint position; if( QCheckBox* checkbox = qobject_cast<QCheckBox*>( receiver ) ) { QStyleOptionButton option; option.initFrom( checkbox ); position = checkbox->style()->subElementRect( QStyle::SE_CheckBoxIndicator, &option, checkbox).center(); } else if( QRadioButton* radiobutton = qobject_cast<QRadioButton*>( receiver ) ) { QStyleOptionButton option; option.initFrom( radiobutton ); position = radiobutton->style()->subElementRect( QStyle::SE_RadioButtonIndicator, &option, radiobutton).center(); } else if( const QMdiSubWindow* window = qobject_cast<QMdiSubWindow*>( receiver ) ) { QStyleOptionTitleBar option; option.initFrom( window ); int titleBarHeight( window->style()->pixelMetric( QStyle::PM_TitleBarHeight, &option, window ) ); QRect titleBarRect( QPoint(0,0), QSize( window->width(), titleBarHeight ) ); if( !titleBarRect.isValid() ) return; position = titleBarRect.center(); } else { position = receiver->rect().center(); } click( receiver, position, delay ); }
void MdiWindow::mouseReleaseEvent(QMouseEvent *event) { QStyleOptionTitleBar option; option.initFrom(this); option.titleBarFlags = windowFlags(); option.titleBarState = windowState(); option.subControls = QStyle::SC_All; option.activeSubControls = QStyle::SC_None; if (!isMinimized()) { option.rect.setHeight(height() - widget()->height()); } if (!isMaximized() && style()->subControlRect(QStyle::CC_TitleBar, &option, QStyle::SC_TitleBarMaxButton, this).contains(event->pos())) { setWindowFlags(Qt::SubWindow | Qt::CustomizeWindowHint | Qt::FramelessWindowHint); showMaximized(); SessionsManager::markSessionModified(); } else if (!isMinimized() && style()->subControlRect(QStyle::CC_TitleBar, &option, QStyle::SC_TitleBarMinButton, this).contains(event->pos())) { const QList<QMdiSubWindow*> subWindows = mdiArea()->subWindowList(); int activeSubWindows = 0; for (int i = 0; i < subWindows.count(); ++i) { if (!subWindows.at(i)->isMinimized()) { ++activeSubWindows; } } storeState(); setWindowFlags(Qt::SubWindow); showMinimized(); if (activeSubWindows == 1) { MainWindow *mainWindow = MainWindow::findMainWindow(mdiArea()); if (mainWindow) { mainWindow->getWindowsManager()->setActiveWindowByIndex(-1); } else { mdiArea()->setActiveSubWindow(NULL); } } else if (activeSubWindows > 1) { ActionsManager::triggerAction(ActionsManager::ActivatePreviouslyUsedTabAction, mdiArea()); } SessionsManager::markSessionModified(); } else if (isMinimized()) { restoreState(); } QMdiSubWindow::mouseReleaseEvent(event); }