[Qt-creator] support for multiple top-level windows?

Alexander cpp at kuchumov.ru
Fri Jun 12 15:21:32 CEST 2009


It's very good idea! I am using multiple monitors and i often want to
move some windows of one copy of QtCreator on secondary display. It's
very useful.

Joel Nordell пишет:
> Hello all,
> 
> What you think about adding support for multiple top-level windows to Qt 
> Creator?  I use two displays on my workstation, and having just a single 
> monolithic window is too limiting to me.  (It doesn't allow me to make 
> use of both monitors.)  I've briefly looked into what it would take to 
> modify Qt Creator to support an "Open in Separate Window" menu action, 
> and here is a VERY rough patch to illustrate the idea.  The patch needs 
> a lot of work, and is nowhere near usable at this point, but hopefully 
> it is enough to give an idea of what I'm thinking.
> 
> Does anyone else have any thoughts/opinions on this?
> 
> Regards,
> 
> Joel Nordell
> Senior Software Engineer, Connectivity Solutions
> CHLORIDE North America
> 27944 N. Bradley Rd.
> Libertyville IL 60048-9700
> Tel: 847-816-6000
> Fax: 847-680-5124
> 
> 
> 
> ========== PATCH IS BELOW ==========
> 
> Index: src/plugins/coreplugin/editormanager/editormanager.cpp
> ===================================================================
> --- src/plugins/coreplugin/editormanager/editormanager.cpp    (original 
> 1.1.0)
> +++ src/plugins/coreplugin/editormanager/editormanager.cpp    (working 
> copy)
> @@ -154,6 +154,7 @@
>      QAction *m_goBackAction;
>      QAction *m_goForwardAction;
>      QAction *m_openInExternalEditorAction;
> +    QAction *m_newWindowAction;
>      QAction *m_splitAction;
>      QAction *m_splitSideBySideAction;
>      QAction *m_removeCurrentSplitAction;
> @@ -334,6 +335,14 @@
>      mwindow->addAction(cmd, Constants::G_WINDOW_NAVIGATE);
>      connect(m_d->m_goForwardAction, SIGNAL(triggered()), this, 
> SLOT(goForwardInNavigationHistory()));
> 
> +    m_d->m_newWindowAction = new QAction(tr("Open in Separate Window"), 
> this);
> +    cmd = am->registerAction(m_d->m_newWindowAction, 
> Constants::NEW_WINDOW, editManagerContext);
> +#ifndef Q_OS_MAC
> +    cmd->setDefaultKeySequence(QKeySequence(tr("Ctrl+Alt+N")));
> +#endif
> +    mwindow->addAction(cmd, Constants::G_WINDOW_SPLIT);
> +    connect(m_d->m_newWindowAction, SIGNAL(triggered()), this, 
> SLOT(openInNewWindow()));
> +
>      m_d->m_splitAction = new QAction(tr("Split"), this);
>      cmd = am->registerAction(m_d->m_splitAction, Constants::SPLIT, 
> editManagerContext);
>  #ifndef Q_OS_MAC
> @@ -1791,6 +1800,17 @@
>      return duplicate;
>  }
> 
> +void EditorManager::openInNewWindow()
> +{
> +    SplitterOrView *view = 0;
> +    IEditor *duplicate = duplicateEditor(m_d->m_currentEditor);
> +    if (duplicate) {
> +        view = new SplitterOrView(duplicate);
> +        view->setAttribute(Qt::WA_DeleteOnClose, true);
> +        view->resize(m_d->m_currentEditor->widget()->width(), 
> m_d->m_currentEditor->widget()->height());
> +        view->show();
> +    }
> +}
> +
>  void EditorManager::split(Qt::Orientation orientation)
>  {
>      SplitterOrView *view = m_d->m_currentView;
> Index: src/plugins/coreplugin/editormanager/editormanager.h
> ===================================================================
> --- src/plugins/coreplugin/editormanager/editormanager.h    (original 
> 1.1.0)
> +++ src/plugins/coreplugin/editormanager/editormanager.h    (working copy)
> @@ -216,6 +216,7 @@
>      void removeCurrentSplit();
>      void removeAllSplits();
>      void gotoOtherSplit();
> +    void openInNewWindow();
> 
>  private:
>      QList<IFile *> filesForEditors(QList<IEditor *> editors) const;
> Index: src/plugins/coreplugin/coreconstants.h
> ===================================================================
> --- src/plugins/coreplugin/coreconstants.h    (original 1.1.0)
> +++ src/plugins/coreplugin/coreconstants.h    (working copy)
> @@ -121,6 +121,7 @@
>  const char * const MINIMIZE_WINDOW       = "QtCreator.MinimizeWindow";
>  const char * const ZOOM_WINDOW           = "QtCreator.ZoomWindow";
> 
> +const char * const NEW_WINDOW            = "QtCreator.NewWindow";
>  const char * const SPLIT                 = "QtCreator.Split";
>  const char * const SPLIT_SIDE_BY_SIDE    = "QtCreator.SplitSideBySide";
>  const char * const REMOVE_CURRENT_SPLIT  = "QtCreator.RemoveCurrentSplit";




More information about the Qt-creator-old mailing list