Important: Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

Conversion of a SQL model into a standard item model?



  • The development of SQL data models can be useful for some software applications. Some applications might prefer to work still with a standard item model for a while instead.

    How often do you see the need to convert database information into the other programming interface by corresponding proxy model classes?



  • @elfring said in Conversion of a SQL model into a standard item model?:

    Some applications might prefer to work still with a standard item model for a while instead

    May I ask why?



  • May I ask why?

    • Possible change resistance
    • Unclear development efforts (and additional dependencies) for a software transformation to better SQL data models


  • @elfring said in Conversion of a SQL model into a standard item model?:

    Possible change resistance

    Deal with it.
    If you mean change in code, by only interacting with QStandardItemModel via the QAbstractItemModel interface as I always suggest, makes changing the model a matter of 1 code line

    Unclear development efforts (and additional dependencies)

    The additional dependency is the SQL module. Hard to get around it if you want to interact with an SQL database



  • … if you want to interact with an SQL database

    Unfortunately, the Qt software documentation mentions specific limitations for the class “QSqlTableModel” so far.


  • Lifetime Qt Champion

    Do you mean the ones solved by QSqlRelationalTableModel and QSqlRelationalDelegate mentioned in the documentation you are linking to ?



  • Maybe.

    Do both table model classes share still the main restriction on editing from a single database table?


  • Lifetime Qt Champion

    It's not a restriction, it's how the class works. QSqlTableModel as it name suggest allows access to one table.

    So what exactly are you after ?
    Specify a real situation
    Specify a real need



  • QSqlTableModel as it name suggest allows access to one table.

    Can such classes collaborate also with database views?



  • From the article you linked:

    If the database system can determine the reverse mapping from the view schema to the schema of the underlying base tables, then the view is updatable. INSERT, UPDATE, and DELETE operations can be performed on updatable views.

    Since there's no generic way for a Qt model to know that, it is left to the user to implement using QSqlQuery directly



  • Would it be nicer if a table model can determine if it is based on an updatable view?



  • Yes, but once again

    @VRonin said in Conversion of a SQL model into a standard item model?:

    there's no generic way for a Qt model to know that



  • Do full-featured standard item models become a bit more attractive then?


  • Lifetime Qt Champion

    Attractive for what ?



  • Would you like to compare the attractiveness of the mentioned data model variants any further?


  • Lifetime Qt Champion

    I'll let you start by providing the analysis you want to discuss about.



  • Is there a “development competition” going on between data processing by SQL queries and/or Qt standard items?


  • Moderators

    @elfring said in Conversion of a SQL model into a standard item model?:

    Is there a “development competition” going on between data processing by SQL queries and/or Qt standard items?

    No, there is no competition going on.

    @elfring, what is your goal for asking us these questions? Are you trying to get us to write a "software extension" for you?



  • I hope that more software evolution can happen in this area so that the switching between discussed data models might become easier.


  • Moderators

    @elfring said in Conversion of a SQL model into a standard item model?:

    I hope that more software evolution can happen in this area so that the switching between discussed data models might become easier.

    We will not perform this "software evolution" because we cannot see any good reason to provide additional conversion/switching between QSqlTableModel and QStandardItemModel. Furthermore, none of your posts above provide convincing arguments for this conversion/switching.



  • Will other Qt users share more convincing arguments from involved software development challenges?



  • @elfring

    Will other Qt users share more convincing arguments from involved software development challenges?

    "Other Qt users" will not even understand what these unending questions are about ;-) Just saying....



  • I assume that some Qt users will care for collateral evolution around data models.


  • Moderators

    @elfring said in Conversion of a SQL model into a standard item model?:

    I assume that some Qt users will care for collateral evolution around data models.

    Yes, there are users here who care about the improvement of Qt data models. For example, @VRonin submitted many patches this year for models (such as https://codereview.qt-project.org/#/c/235730/4//ALL ), and his changes were accepted by the Qt Project.

    His changes were accepted for a few reasons:

    1. Because his submissions solve real problems that are encountered by real people.
    2. Because his submissions do not introduce new problems.

    Try to follow his example. Try to submit proposals that solve real problems, and try not to introduce new problems.

    First, thank you for submitting https://bugreports.qt.io/browse/QTBUG-71482. This is a good submission because it addresses a real problem: Important documentation is missing.

    However, here are some examples where your submissions are not good:

    1. This thread ("Conversion of a SQL model into a standard item model?") is rejected because it does not solve a real problem. Nobody here needs to convert/switch between QSqlTableModel and QStandardItemModel.
    2. "Returning C++ references from more programming interfaces?" is rejected because it introduces a new problem: It breaks encapsulation.


  • Nobody here needs to convert/switch between QSqlTableModel and QStandardItemModel.

    I am experimenting with such a transformation for a specific software application for a while.


  • Moderators

    @elfring said in Conversion of a SQL model into a standard item model?:

    I am experimenting with such a transformation for a specific software application for a while.

    Then I suggest you make the changes yourself.

    If you want someone else to make the changes, you must first explain your project in lots of detail (write many paragraphs to explain what you are trying to do!) and you must convince us that it is worth spending time to make the changes in Qt. Remember, the changes must also avoid introducing new problems.



  • …, you must first explain your project in lots of detail …

    I am trying to achieve something also for another free software application (as you might have noticed already).
    The possible design decisions have got further consequences on the corresponding software development efforts.


  • Moderators

    @elfring said in Conversion of a SQL model into a standard item model?:

    I am trying to achieve something also for another free software application (as you might have noticed already).

    Please provide a link to the application.

    The possible design decisions have got further consequences on the corresponding software development efforts.

    This is very vague, so I still cannot understand what you're trying to achieve. The application can use a QSqlTableModel without converting it to a QStandardItemModel, right?



  • Please provide a link to the application.

    Do you care for any evolution around the software “Cppcheck”?

    The application can use a QSqlTableModel without converting it to a QStandardItemModel, right?

    I can imagine such a software development option.
    But a published program has got a strong dependency on Qt standard items so far.


  • Moderators

    @elfring said in Conversion of a SQL model into a standard item model?:

    Please provide a link to the application.

    Do you care for any evolution around the software “Cppcheck”?

    The application can use a QSqlTableModel without converting it to a QStandardItemModel, right?

    I can imagine such a software development option.
    But a published program has got a strong dependency on Qt standard items so far.

    @elfring, the maintainer for Cppcheck asked you to stop. The right thing to do is to respect his wishes.



  • the maintainer for Cppcheck asked you to stop.

    I find it strange that you interpret available information in this direction.

    The right thing to do is to respect his wishes.

    He stumbles also on some understanding difficulties in several software development areas.

    The evolution will be continued also for a known source code analysis software.
    I am curious on how the corresponding graphical user interface can be improved further.


  • Moderators

    @elfring said in Conversion of a SQL model into a standard item model?:

    the maintainer for Cppcheck asked you to stop.

    I find it strange that you interpret available information in this direction.

    This is the only way to interpret "I do not want that you work more on Cppcheck."

    The right thing to do is to respect his wishes.

    He stumbles also on some understanding difficulties in several software development areas.

    That is not relevant. You can't use that as an excuse to ignore someone's wishes.

    Do you know why he rejected your changes? One big reason is because you ignore requests/instructions. For example, he said "please rename 'do_stuff' to 'doStuff'" and "I would prefer to see some small refactoring PRs first." ...but you refused.



  • This is the only way to interpret "I do not want that you work more on Cppcheck."

    Such information was given on 2018-10-14. The maintainer mentioned further details for his reasoning.

    I pointed related clarification possibilities out for his software development concerns.

    That is not relevant.

    We stumble on some understanding difficulties in several situations. I find that they become more interesting when they hinder progress in desired development directions.

    You can't use that as an excuse to ignore someone's wishes.

    I guess that there is a general interest conflict involved. Contributors would like to adjust specific software components here.

    Do you know why he rejected your changes?

    I can see published information. But I guess that additional aspects should be considered as the background for such feedback.

    One big reason is because you ignore requests/instructions.

    I chose to respond in different ways again.

    ...but you refused.

    • How do you think about my feedback to the mentioned considerations?
    • Did you take any details from previous software development history into account for a better understanding of communication constraints?
    • Would you like to pick any further opportunities up to clarify varying probabilities for (temporary) disagreements?

  • Moderators

    @elfring said in Conversion of a SQL model into a standard item model?:

    This is the only way to interpret "I do not want that you work more on Cppcheck."

    Such information was given on 2018-10-14. The maintainer mentioned further details for his reasoning.

    Please tell me what his reasoning was. Write it in your own words, to show that you understood his reasons; don't just post a link.

    I pointed related clarification possibilities out for his software development concerns.

    I see that you submitted a bug fix and it was accepted: https://github.com/danmar/cppcheck/pull/1457. That was a good post, well done!

    Please make your future posts like this, because writing good code is the best way to address software development concerns.

    Do you know why he rejected your changes?

    I can see published information. But I guess that additional aspects should be considered as the background for such feedback.

    Don't just look at published information. Think about other people's feelings too.

    I was trying to explain to you: When you submit a change that ignores requests/instructions, that change is likely to get rejected.

    One big reason is because you ignore requests/instructions.

    I chose to respond in different ways again.

    When you choose to respond in different ways, it can cause conflict. Remember this.

    ...but you refused.

    • How do you think about my feedback to the mentioned considerations?

    Which considerations do you mean? Please copy and paste here.

    • Did you take any details from previous software development history into account for a better understanding of communication constraints?

    I don't understand this question.

    What language do you speak at home?

    • Would you like to pick any further opportunities up to clarify varying probabilities for (temporary) disagreements?

    If you are willing to listen, then I am willing to discuss things with you. But this post is already quite long, so I will take "further opportunities" next time.



  • I don't understand this question.

    • How do you think about information from Cppcheck's forum and issue tracker?
    • Do you care for software aspects which can be discussed there?