I need fast plotting widget in Qt, but I don't want to use anything prepared.
I have some float data, for example QVector< float >
data, and I need to paint it on widget. But I don't want use paintEvent
and QPainter
directly on it. Is there any chance to convert this data for bitmap (pixmap?) and just load it directly to show on widget? How I can create bitmap from float numbers?
Fast plotting with pixmap or bitmap in Qt
3.5k views Asked by Tatarinho At
1
There are 1 answers
Related Questions in QT
- Apple Watch: WKInterfaceLabel doesn't update on device, but fine on simulator
- Display both alertTitle and AlertBody on a custom WatchKit notification
- Check if image with name is set (WatchKit)
- AppleWatch - "attempt to insert nil" when calling WKInterfaceDevice addCachedImage
- Why is willActivate called twice when watch app enters foreground?
- Detect WKInterfaceButton pressed continuously?
- How can I setup the distribution build to get watchkit App working?
- Play sound with WatchKit 2
- How to record audio and play it with WatchOS2?
- change initial interface controller in watchKit
Related Questions in PLOT
- Apple Watch: WKInterfaceLabel doesn't update on device, but fine on simulator
- Display both alertTitle and AlertBody on a custom WatchKit notification
- Check if image with name is set (WatchKit)
- AppleWatch - "attempt to insert nil" when calling WKInterfaceDevice addCachedImage
- Why is willActivate called twice when watch app enters foreground?
- Detect WKInterfaceButton pressed continuously?
- How can I setup the distribution build to get watchkit App working?
- Play sound with WatchKit 2
- How to record audio and play it with WatchOS2?
- change initial interface controller in watchKit
Related Questions in BITMAP
- Apple Watch: WKInterfaceLabel doesn't update on device, but fine on simulator
- Display both alertTitle and AlertBody on a custom WatchKit notification
- Check if image with name is set (WatchKit)
- AppleWatch - "attempt to insert nil" when calling WKInterfaceDevice addCachedImage
- Why is willActivate called twice when watch app enters foreground?
- Detect WKInterfaceButton pressed continuously?
- How can I setup the distribution build to get watchkit App working?
- Play sound with WatchKit 2
- How to record audio and play it with WatchOS2?
- change initial interface controller in watchKit
Related Questions in REPAINT
- Apple Watch: WKInterfaceLabel doesn't update on device, but fine on simulator
- Display both alertTitle and AlertBody on a custom WatchKit notification
- Check if image with name is set (WatchKit)
- AppleWatch - "attempt to insert nil" when calling WKInterfaceDevice addCachedImage
- Why is willActivate called twice when watch app enters foreground?
- Detect WKInterfaceButton pressed continuously?
- How can I setup the distribution build to get watchkit App working?
- Play sound with WatchKit 2
- How to record audio and play it with WatchOS2?
- change initial interface controller in watchKit
Related Questions in PIXMAP
- Apple Watch: WKInterfaceLabel doesn't update on device, but fine on simulator
- Display both alertTitle and AlertBody on a custom WatchKit notification
- Check if image with name is set (WatchKit)
- AppleWatch - "attempt to insert nil" when calling WKInterfaceDevice addCachedImage
- Why is willActivate called twice when watch app enters foreground?
- Detect WKInterfaceButton pressed continuously?
- How can I setup the distribution build to get watchkit App working?
- Play sound with WatchKit 2
- How to record audio and play it with WatchOS2?
- change initial interface controller in watchKit
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
Popular Tags
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
If painting is overhead, you can move it to another thread, this way it will not lock up the event loop of your application, and the result will be updated when it is done.
Since you want arbitrary plots, there is really no magic way to "convert data to bitmap", you have to use
QPainter
to draw your stuff.Here is a quick example how to use an async plotter object:
The plotter is created with its size, range and data parameters, I used a
QRectF
for the range, basically using the x/width and y/height as horizontal and vertical range. The plotter is a very naive implementation for the sake of example, and uses themap()
method to "normalize" the data points to the area of the image that is being drawn onto in a linear fashion. I also added a timer to see how long it takes to plot all points.This is the example widget which is used to create the plot, populate the data and show the result:
For my example I populate the data with 200 000 values in the range 0-1. Then create the plotter with the size of the widget, the range 0-1 for X and Y, create the thread and move the plotter to it, do the necessary connections and start the thread. Upon start up, the thread will call the
plot()
slot, which will emit the plot result to the widget'supdatePlot()
slot. When the result is sent the plotter will quit the thread event loop, which will delete the plotter object and the thread so they don't leak.As for how fast this is, my i7 desktop plots the 200 000 points in 8 milliseconds, so it is not slow by any means.