Guidance for a Qt Application (2D) to view scrolling time series data
-
New to Qt. I'm getting started on an application that I want to run on a desktop (including high-end) ruining - Windows, Linux or MacOS.
There are many models, tools and API's to chose from. I'd like some guidance on the optimal (performance) to start with.
The application will be displaying a bunch of time series data - many channels of analog data with potentially many K samples. It needs to smoothly scroll through the time series (left to right) and over a list of many channels (up and down).
Below is an example of what I'm trying to do. It's a screen shot of what I consider to be the gold standard of performance and usability. I'll be displaying biological data, but the nature of the data is exactly the same.
The application is "Logic" by Saleae. It is logic analyzer software implemented with Qt that runs on Windows, Linux and MacOS. From a performance and usability perspective, it is some of the best software I've ever worked with.
The application can be downloaded from: https://www.saleae.com/downloads. You can use it to look at synthetic data - but you can see just how quickly and smoothly it operates. It is the companion to their USB based logic analyzer boxes. Their hardware is as impressive as their software. If you need an inexpensive high quality logic analyzer - I'd start there.
What I'm aiming for is along those same lines. So, being new to Qt I'm not even certain I know the questions to ask.
-
Should I base it off of the GL libraries or straight Qt? Since it is 2D and not 3D, is there still performance advantages to using GL? Does using the Vulcan API make sese for 2D?
-
What should I render into? I know there are several layers that you can use. I'm willing to put up with some extra development pain, if I can get some useful performance gains. OpenGLWindow vs QWindow with OpenGL?
-
?? What other questions do I need to ask?
OpenGL accelerated QLineSeries on a window or surface that is wider than the viewable area. Pre and post data can be rendered to the surface - then as the surface is flicked or scrolled, only data previously off-screen would need to be rendered.
Should I consider double buffering?
Thanks,
Steve -