[Interest] Excel-like grid of numbers in QML
Charley Bay
charleyb123 at gmail.com
Sat Apr 13 15:44:18 CEST 2013
Sergey asketh:
> Must Spreadsheet QML element be written using Qt C++?
>
This is a very interesting exercise, IMHO, and I'm very interested in the
results. (Please share as you learn stuff.)
In the past, I've written and used many "spread-sheet-widgets". The issues
seem to come down to:
(1) How many cells are we talking about (how big is the grid)? If "big",
I'd assume C++ is the only way to go.
(2) What is the "data-model"? (Do you have a database back-end, a
grid-of-strings you are reflecting, primitive types or application-specific
types, etc.?)
(3) (Possibly less relevant), how are you intending the
"notifications/updates" to occur in the GUI when the model changes? (Each
"cell" is atomic, or a sweeping change for all-cells, handling recursion,
etc.)
My guess: All-QML should be fine for "small". However, for "big", most
historical implementations render a "bitmap" to the screen for all the
cells, and create-a-component-on-the-fly when the "cell" is "clicked" on
the bitmap. That's because creating a component for each cell was
historically resource-prohibitive. Even a 100x100 grid with "buttons" or
"text-lines" on X/Motif or Windows was absolutely unusable (too
slow/expensive). That should be better today, but you'd be surprised how
*quickly* you can't have all-widgets-all-the-time.
That *might* be different for QML, which is why (3) notifications/update
with declarative-QML might be different. It probably *is* quite a lot
better, since QML components are "lighter" with a different rendering
mechanism, and they use OpenGL with a separate update/notification engine
for the "component" outside the GUI. It's quite possible that we could now
*have* the 10Kx10K grid-of-QML-components. That's what I want to
understand, and why I was thinking about writing one. (I'd want the
back-end in C++, though, so I could expose application-specific types like
from hardware.)
For example, I've been considering a QML-spreadsheet implementation,
because the declarative representation and transitions/rendering pushed to
OpenGL could solve a lot of problems, and QML should be able to provide a
spreadsheet-interface with much "richer" user-feedback than historical
implementations. And, most applications have reasonable need to display
"records" or something in a spreadsheet-like interface.
> Are there some ready tutorials/demos/examples for it?
>
I'll bet "no", but maybe (because it would come after the
desktop-components in Qt5.1). I'd be very interested in any effort that
then *benchmarks* the usability with a grid of 100x100, 1000x1000, 10Kx10K,
etc. (That defines the scenario by which the design approach is reasonable.)
Is it possible to attach such an element to PyQT4?
>
I'm sure that no matter the implementation, it should be available to PyQt4
without much trouble. But, I'd assume a spreadsheet-component would have a
rich API, so it might have a non-trivial interface/adapter to maintain.
The commercial spreadsheet-widgets were historically priced high ($),
because they are tricky to "get-right" with a reasonable API, and to ensure
it could "scale" to real-world data-set-sizes. IMHO, your "ambition" for
how it would be used is quite important as it relates to your
design/implementation.
For example, if you merely want something 100x100 cells, you could probably
do anything, and it would perform fine.
--charley
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.qt-project.org/pipermail/interest/attachments/20130413/fc7b6104/attachment.html>
More information about the Interest
mailing list