#include "mainwindow.h" #include "ui_mainwindow.h" #include #include "mainwindow.h" #include "QtOpenGL" #include "qdockwidget.h" #include "qtoolbar.h" #include "qaction.h" #include #include #include "QStyle" #include "qtoolbutton.h" #include "qboxlayout.h" #include "qwidget.h" #include "QMenu" #include "QEvent" #include "QObject" #include "QMessageBox" #include MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { mouseDown = false; QToolBar* toolbar = new QToolBar(); QPixmap pix = toolbar->style()->standardPixmap(QStyle::SP_TitleBarNormalButton); QAction* restoreStateButton = new QAction("Restore State", 0); restoreStateButton->setIcon(QIcon(pix)); QToolButton* button = new QToolButton(); button->addAction(restoreStateButton); button->setIcon(QIcon(pix)); QAction* restoreStateButton1 = new QAction("Restore State", 0); restoreStateButton1->setIcon(QIcon(pix)); QToolButton* button1 = new QToolButton(); button1->addAction(restoreStateButton1); button1->setIcon(QIcon(pix)); QAction* restoreStateButton2 = new QAction("Restore State", 0); restoreStateButton2->setIcon(QIcon(pix)); QToolButton* button2 = new QToolButton(); button2->addAction(restoreStateButton2); button2->setIcon(QIcon(pix)); QAction* restoreStateButton3 = new QAction("Restore State", 0); restoreStateButton3->setIcon(QIcon(pix)); QToolButton* button3 = new QToolButton(); button3->addAction(restoreStateButton3); button3->setIcon(QIcon(pix)); QAction* restoreStateButton4 = new QAction("Restore State", 0); restoreStateButton4->setIcon(QIcon(pix)); QToolButton* button4 = new QToolButton(); button4->addAction(restoreStateButton4); button4->setIcon(QIcon(pix)); QAction* restoreStateButton5 = new QAction("Restore State", 0); restoreStateButton5->setIcon(QIcon(pix)); QToolButton* button5 = new QToolButton(); button5->addAction(restoreStateButton5); button5->setIcon(QIcon(pix)); QAction* restoreStateButton6 = new QAction("Restore State", 0); restoreStateButton6->setIcon(QIcon(pix)); QToolButton* button6 = new QToolButton(); button6->addAction(restoreStateButton6); button6->setIcon(QIcon(pix)); QAction* restoreStateButton7 = new QAction("Restore State", 0); restoreStateButton7->setIcon(QIcon(pix)); QToolButton* button7 = new QToolButton(); button7->addAction(restoreStateButton7); button7->setIcon(QIcon(pix)); button->setPopupMode(QToolButton::MenuButtonPopup); button1->setPopupMode(QToolButton::MenuButtonPopup); button2->setPopupMode(QToolButton::MenuButtonPopup); button3->setPopupMode(QToolButton::MenuButtonPopup); button4->setPopupMode(QToolButton::MenuButtonPopup); button5->setPopupMode(QToolButton::MenuButtonPopup); button6->setPopupMode(QToolButton::MenuButtonPopup); button7->setPopupMode(QToolButton::MenuButtonPopup); QMenu* menu = new QMenu(); menu->addAction(restoreStateButton); menu->addAction(restoreStateButton1); menu->addAction(restoreStateButton2); menu->addAction(restoreStateButton3); menu->addAction(restoreStateButton4); menu->addAction(restoreStateButton5); menu->addAction(restoreStateButton6); menu->addAction(restoreStateButton7); button->setMenu(menu); button1->setMenu(menu); button2->setMenu(menu); button3->setMenu(menu); button4->setMenu(menu); button5->setMenu(menu); button6->setMenu(menu); toolbar->addWidget(button); toolbar->addWidget(button1); toolbar->addWidget(button2); toolbar->addWidget(button3); toolbar->addWidget(button4); toolbar->addWidget(button5); toolbar->addWidget(button6); toolbar->addWidget(button7); /* toolbar->addAction(restoreStateButton); toolbar->addAction(restoreStateButton1); toolbar->addAction(restoreStateButton2); toolbar->addAction(restoreStateButton3); toolbar->addAction(restoreStateButton4); toolbar->addAction(restoreStateButton5); toolbar->addAction(restoreStateButton6); toolbar->addAction(restoreStateButton7); */ QToolBar* toolbar2 = new QToolBar(); addToolBar(toolbar); addToolBar(toolbar2); ui->setupUi(this); setWindowTitle(QT_VERSION_STR); } bool MainWindow::eventFilter(QObject *obj, QEvent *event){ bool retval = QMainWindow::eventFilter(obj, event); QMouseEvent* mouseEvent = dynamic_cast(event); QDockWidget* dockWidget = dynamic_cast(obj); if(mouseEvent){ if(mouseEvent->type() == QEvent::MouseButtonPress){ mouseDown = true; }else if(mouseEvent->type() == QEvent::MouseMove){ if(mouseDown && dockWidget && dockWidget->isFloating()){ qDebug() << "Creating message box"; QWidget *mouseGrabbed = QWidget::mouseGrabber(); QPoint pos = QCursor::pos(); if (mouseGrabbed) { mouseGrabbed->releaseMouse(); #ifdef SENDMOUSERELEASE QMouseEvent me(QEvent::MouseButtonRelease, mouseEvent->pos(), Qt::LeftButton, Qt::NoButton, Qt::NoModifier); QApplication::sendEvent(mouseGrabbed, &me); #endif } QMessageBox* message = new QMessageBox(this); message->setAttribute(Qt::WA_DeleteOnClose); message->move(geometry().topRight() + QPoint(20, 20)); message->setObjectName("MessageBox"); message->setText("This Message Box is not getting Mouse Events!!!"); message->exec(); mouseDown = false; #ifndef SENDMOUSERELEASE if (mouseGrabbed) { mouseGrabbed->grabMouse(); QCursor::setPos(pos); } #endif } }else if(mouseEvent->type() == QEvent::MouseButtonRelease){ mouseDown = false; } } return retval; } MainWindow::~MainWindow() { delete ui; }