OptionWidget::OptionWidget(const QString &title, QWidget *mainWidget, QWidget *parent) : QFrame(parent), mainWidget(mainWidget), isFolded(true) { setFrameStyle(QFrame::StyledPanel | QFrame::Raised); setMinimumWidth(300); moveButton = new BorderlessToolButton("images/Move.png", this); moveButton->setDragging(true); connect(moveButton, SIGNAL(dragEvent(QMouseEvent*)), this, SLOT(dragEvent(QMouseEvent*))); foldInButton = new BorderlessToolButton("images/ArrowUp.png", this); connect(foldInButton, SIGNAL(clicked()), this, SLOT(toggleFolding())); foldOutButton = new BorderlessToolButton("images/ArrowDown.png", this); connect(foldOutButton, SIGNAL(clicked()), this, SLOT(toggleFolding())); closeButton = new BorderlessToolButton("images/Close.png", this); connect(closeButton, SIGNAL(clicked()), this, SLOT(close())); QHBoxLayout *controlsLayout = new QHBoxLayout; controlsLayout->setMargin(0); controlsLayout->setAlignment(Qt::AlignRight | Qt::AlignTop); controlsLayout->addWidget(moveButton); controlsLayout->addWidget(foldInButton); controlsLayout->addWidget(foldOutButton); controlsLayout->addWidget(closeButton); QWidget *controlsWidget = new QWidget; controlsWidget->setLayout(controlsLayout); controlsWidget->adjustSize(); controlsWidget->update(); QHBoxLayout *titleLayout = new QHBoxLayout; titleLayout->setMargin(0); titleLayout->addWidget(new QLabel(title)); titleLayout->addWidget(controlsWidget); QWidget *titleWidget = new QWidget; titleWidget->setLayout(titleLayout); titleWidget->adjustSize(); titleWidget->update(); separatorLine = new QFrame; separatorLine->setFrameShape(QFrame::HLine); QVBoxLayout *layout = new QVBoxLayout; layout->addWidget(titleWidget); layout->addWidget(separatorLine); layout->addWidget(mainWidget); toggleFolding(); layout->update(); setLayout(layout); };
// //! [CustomViewerWorkbenchWindowAdvisorPreWindowOpen] // //! [WorkbenchWindowAdvisorCreateWindowContentsHead] void CustomViewerWorkbenchWindowAdvisor::CreateWindowContents(berry::Shell::Pointer shell) { //the all containing main window QMainWindow* mainWindow = static_cast<QMainWindow*>(shell->GetControl()); // //! [WorkbenchWindowAdvisorCreateWindowContentsHead] mainWindow->setVisible(true); //the widgets QWidget* CentralWidget = new QWidget(mainWindow); CentralWidget->setObjectName("CentralWidget"); CentralWidget->setVisible(true); QtPerspectiveSwitcherTabBar* PerspectivesTabBar = new QtPerspectiveSwitcherTabBar(this->GetWindowConfigurer()->GetWindow()); PerspectivesTabBar->setObjectName("PerspectivesTabBar"); PerspectivesTabBar->addTab("Image Viewer"); PerspectivesTabBar->addTab("DICOM-Manager"); PerspectivesTabBar->setVisible(true); PerspectivesTabBar->setDrawBase(false); QPushButton* StyleUpdateButton = new QPushButton("Update Style", mainWindow); StyleUpdateButton->setMaximumWidth(100); StyleUpdateButton->setObjectName("StyleUpdateButton"); QObject::connect(StyleUpdateButton, SIGNAL( clicked() ), this, SLOT( UpdateStyle() )); QToolButton* OpenFileButton = new QToolButton(mainWindow); OpenFileButton->setMaximumWidth(100); OpenFileButton->setObjectName("FileOpenButton"); OpenFileButton->setText("Open File"); QObject::connect(OpenFileButton, SIGNAL( clicked() ), this, SLOT( OpenFile() )); QWidget* PageComposite = new QWidget(CentralWidget); PageComposite->setObjectName("PageComposite"); PageComposite->setVisible(true); //the layouts QVBoxLayout* CentralWidgetLayout = new QVBoxLayout(CentralWidget); CentralWidgetLayout->contentsMargins(); CentralWidgetLayout->setContentsMargins(9,9,9,9); CentralWidgetLayout->setSpacing(0); CentralWidgetLayout->setObjectName("CentralWidgetLayout"); QHBoxLayout* PerspectivesLayer = new QHBoxLayout(mainWindow); PerspectivesLayer->setObjectName("PerspectivesLayer"); QHBoxLayout* PageCompositeLayout = new QHBoxLayout(PageComposite); PageCompositeLayout->setContentsMargins(0,0,0,0); PageCompositeLayout->setSpacing(0); PageComposite->setLayout(PageCompositeLayout); // //! [WorkbenchWindowAdvisorCreateWindowContents] //all glued together mainWindow->setCentralWidget(CentralWidget); CentralWidgetLayout->addLayout(PerspectivesLayer); CentralWidgetLayout->addWidget(PageComposite); CentralWidget->setLayout(CentralWidgetLayout); PerspectivesLayer->addWidget(PerspectivesTabBar); PerspectivesLayer->addSpacing(300); PerspectivesLayer->addWidget(OpenFileButton); //for style customization convenience /*PerspectivesLayer->addSpacing(10); PerspectivesLayer->addWidget(StyleUpdateButton);*/ //for correct initial layout, see also bug#1654 CentralWidgetLayout->activate(); CentralWidgetLayout->update(); this->GetWindowConfigurer()->CreatePageComposite(PageComposite); // //! [WorkbenchWindowAdvisorCreateWindowContents] }
void Plugin::handleShowList () { auto rootWM = Proxy_->GetRootWindowsManager (); ICoreTabWidget *tw = rootWM->GetTabWidget (rootWM->GetPreferredWindowIndex ()); if (tw->WidgetCount () < 2) return; QWidget *widget = new QWidget (nullptr, Qt::Popup | Qt::FramelessWindowHint); widget->setAttribute (Qt::WA_TranslucentBackground); widget->setWindowModality (Qt::ApplicationModal); QVBoxLayout *layout = new QVBoxLayout (); layout->setSpacing (1); layout->setContentsMargins (1, 1, 1, 1); const int currentIdx = tw->CurrentIndex (); QToolButton *toFocus = 0; QList<QToolButton*> allButtons; for (int i = 0, count = tw->WidgetCount (); i < count; ++i) { const QString& origText = tw->TabText (i); QString title = QString ("[%1] ").arg (i + 1) + origText; if (title.size () > 100) title = title.left (100) + "..."; QAction *action = new QAction (tw->TabIcon (i), title, this); action->setToolTip (origText); action->setProperty ("TabIndex", i); action->setProperty ("ICTW", QVariant::fromValue<ICoreTabWidget*> (tw)); connect (action, SIGNAL (triggered ()), this, SLOT (navigateToTab ())); connect (action, SIGNAL (triggered ()), widget, SLOT (deleteLater ())); auto button = new QToolButton (); button->setDefaultAction (action); button->setToolButtonStyle (Qt::ToolButtonTextBesideIcon); button->setSizePolicy (QSizePolicy::Expanding, button->sizePolicy ().verticalPolicy ()); button->setProperty ("OrigText", origText); layout->addWidget (button); if (currentIdx == i) toFocus = button; allButtons << button; } widget->installEventFilter (new ListEventFilter (allButtons, this, widget)); widget->setLayout (layout); layout->update (); layout->activate (); const QRect& rect = QApplication::desktop ()-> screenGeometry (rootWM->GetPreferredWindow ()); QPoint pos = rect.center (); const QSize& size = widget->sizeHint () / 2; pos -= QPoint (size.width (), size.height ()); widget->move (pos); widget->show (); if (toFocus) toFocus->setFocus (); }