Skip to content
baldurk edited this page May 12, 2014 · 2 revisions

List of things to do before the Qt RenderDoc UI is comparable with the .NET UI:

Docking UI

This is the biggest thing. The closest equivalent of DockPanelSuite in Qt is the QDockWidget. A QMainWindow has the ability to dock things left, right, top or bottom - and these can then be nested arbitrarily. You can tab up dock widgets as well on the same area.

Things to address/sort/investigate:

  • By default QMainWindow doesn't allow docking in the middle/central area, it expects you to put a fixed control there. This doesn't really fit for RenderDoc. The 'fix' for this seems to be docking all dockwidgets to the bottom, and setting NULL as the central widget. Then you can arbitrarily nest and everything can dock pretty much as it can on .NET. I'm not sure if there are any downsides to doing this, it seems a bit artificial. Potentially we can rewrite the functionality of QMainWindow to allow docking everywhere, but this seems like a bad idea.
  • I think you can limit the scope of some QDockWidgets by having a child QMainWindow, but I need to test it. For example the mesh viewer, shader viewer and texture viewers are all docking UIs but their children are 'scoped' only to those windows - so you can't dock the pixel context from the texture viewer into a shader viewer.
  • You can't drag QDockWidgets by their tabs when they are tabbed in a section. You have to click on the little titlebar they have to drag them away. This will need custom-written code I guess.
  • There is no functionality for auto-hiding dock widgets like you can with dockpanelsuite. This will also need custom-written code to support this.
  • Need to find out how to set a percentage size for different docking section, like e.g. set the top as 30%. It seems like the sizing of dock contents is defined by the pixel sizes of the contents maybe? Or each widget might need to write custom size hinting code.
  • Serialising layouts in/out, there is a saveState()/restoreState() but I'm not sure how to put custom state saving and restoring into the QDockWidgets.
  • Have to customise the QDockWidget behaviour somehow so that you can double click on a floating window and maximise it instead of re-docking.
  • There seems to be no way of docking to a floating window. When a QDockWidget is floating it can't be docked to in any way by another QDockWidget.

Scintilla Editor

In the Scintilla source tree there's a qt/ folder that builds a Qt dll, need to figure out how to include it as a qt widget - perhaps just including the appropriate includes will work.

TreeListView

I use the TreeListView .NET control quite extensively. I need to find the equivalent control in Qt and write any custom code to tailor it to my needs. It needs:

  1. Customisable columns, add, remove, user drag-and-drop.
  2. Choose which column has the 'tree' - it shouldn't have to be the first column.
  3. Putting icons into rows that can highlight and be clickable.
  4. Change per-row, per-column or per-cell colours, fonts, etc

Clone this wiki locally