QTableWidget vs QTableView

40,472

Solution 1

cmannett85's recommendation is a good one. Read the docs about a dozen times.

Then, if performance and memory issues are your primary concern and you think you can out-perform the QTableWidget implementation, then a QTableView interface on top of a QAbstractTableModel or QStandardItemModel is what you're looking for.

Since you're new to Qt's model-view architecture, I'd recommend using the QStandardItemModel until you feel like you're getting the hang of it. If your performance still isn't good enough, avoid a lot of the memory duplication and wasted objects by implementing your custom model. Plus, get yourself a good textbook and read its chapter on the model-view framework about 12 times. That section alone was worth its weight in gold, imho.

Here are the basics for Qt's custom model-view framework:

  • Your actual data is stored in a list/tree somewhere
  • The model provides a standard framework for queries to and edits for your data
  • Proxy models allow you to sort/filter your data without affecting the original model
  • The view provides a means to visually observe and interact with your data
  • Delegates (often optional) tweak the appearance of your data and provide custom editors to the data

If you're feeling both cheap and brave, check out this excerpt on implementing your own custom model. Work at it one function at a time and play with it as you go.

Solution 2

To understand the framework, start off with the documentation about it. It starts slow, but becomes moderately extensive and covers most of the classes involved.

QTableWidget or QTableView?

Once you have read the documentation you will see why this question doesn't really make any sense: a QTableWidget uses a QTableView to display the data. QTableWidget (along with QTreeWidget, etc.) uses the MVC framework, but it encapsulates it all to a handy package useful for most purposes, but if you need to do something different, you will have to crack it into it's component parts and reimplement the bits you need.

Share:
40,472
Cool_Coder
Author by

Cool_Coder

My first software, here. SOreadytohelp

Updated on September 01, 2020

Comments

  • Cool_Coder
    Cool_Coder almost 4 years

    I am new to this Model/View Framework of Qt. In my application I want to have 1000 X 1000 cells. There should be minimum memory requirement & it should be fast. I don't know what this Model terminology is for. But I have my own class which knows how to deal with the double variables stored in the table. Currently I am using QLineEdit's with a Validator to create the array of cells. But it was way too slow for cells > 50 X 50. So I decided to go the good old MS Excel way.

    So which Widget should I use: QTableWidget or QTableView?

    And can anybody please explain in short what this Model/View framework is? I am not a Computer Science guy hence I am finding it tough to understand...

  • Cool_Coder
    Cool_Coder over 11 years
    Thank You I will buy that book & follow your guidance.
  • Cool_Coder
    Cool_Coder over 11 years
    Thank You read that the document about 2-3 times, starting to get a hang of it.
  • Claudiu
    Claudiu almost 9 years
    The "this excerpt" link is now dead
  • Bernhard
    Bernhard over 5 years
    QTableWidget uses a QTableView, that's actually the information I was after, thanks. Edit: I see that QTableWidget even is a QTableView