[Qt-interest] How to remove itemsfrom QSqlTableModelvia QTableView

Sven Grunewaldt strayer at olle-orks.org
Tue Apr 28 13:34:50 CEST 2009


Just tried it, same happens with Qt SDK 2009.02

Am 28.04.2009 13:25, schrieb Sven Grunewaldt:
> Hi Tony,
>
> No problem, according to the docs it should work ;)
> I even found a very same looking function here: 
> https://svn.cscs.ch/pv-meshless/trunk/Qt/Components/pqColorPresetManager.cxx
>
> I'm using Qt 4.5.1 with Visual Studio 2008 on Windows Vista.
> Configure options:
> ---
> -debug-and-release
> -opensource
> -no-qt3support
> -no-vcproj
> -no-dsp
> -no-plugin-manifests
> -no-style-plastique
> -no-style-cleanlooks
> -no-style-motif
> -no-style-cde
> -nomake demos
> -nomake examples
> -openssl
> -I  E:\Entwicklung\lib\openssl-0.9.8k\include
> -L E:\Entwicklung\lib\openssl-0.9.8k\lib
> ---
>
> I'll later check if this also fails with the Qt SDK.
>
> Regards,
> Sven Grunewaldt
>
> Am 28.04.2009 02:27, schrieb Tony Rietwyk:
>> Hi Sven,
>> Sorry, I haven't done this myself - I was only relying on the docs to 
>> save you trouble later!
>> It looks like a bug, which OS / QT versions are you using?
>> Tony.
>>
>>     *Sent:* Tuesday, 28 April 2009 05:06
>>     Hi,
>>
>>     actually this doesn't seem to work and I again don't understand
>>     why ;)
>>
>>     My function:
>>     ---
>>     void BerichteOrk::removeSelectedFromTableView(QTableView* view)
>>     {
>>         QAbstractItemModel* model = view->model();
>>
>>         const QModelIndexList tmp =
>>     view->selectionModel()->selectedIndexes();
>>         QList<QPersistentModelIndex> indexes;
>>
>>         for (int i = 0; i < tmp.size(); i++)
>>         {
>>             qDebug() << tmp.at(i).internalId() << tmp.at(i).isValid()
>>     << tmp.at(i).row();
>>             indexes.append(QPersistentModelIndex(tmp.at(i)));
>>             qDebug() << tmp.at(i).internalId() << tmp.at(i).isValid();
>>         }
>>         qDebug() << "";
>>         for (int i = 0; i < indexes.size(); i++)
>>         {
>>             qDebug() << indexes.at(i).internalId() <<
>>     indexes.at(i).isValid() << indexes.at(i).row();
>>             model->removeRow(indexes.at(i).row());
>>             qDebug() << indexes.at(i).internalId() <<
>>     indexes.at(i).isValid();
>>         }
>>
>>         view->resizeColumnsToContents();
>>         view->resizeRowsToContents();
>>         view->horizontalHeader()->setStretchLastSection(true);
>>     }
>>     ---
>>
>>     qDebug() output:
>>     ---
>>     0 true 1
>>     0 true
>>     0 true 2
>>     0 true
>>     0 true 3
>>     0 true
>>     0 true 4
>>     0 true
>>
>>     0 true 1
>>     0 false
>>     0 false -1
>>     0 false
>>     0 false -1
>>     0 false
>>     0 false -1
>>     0 false
>>     ---
>>
>>     As I understand the documentation this _should_ work...
>>
>>     Regards,
>>     Sven Grunewaldt
>>
>>     Am 27.04.2009 01:15, schrieb Tony Rietwyk:
>>>     Hi Sven,
>>>     Correct me if I'm wrong, but I don't think you should make any
>>>     assumptions about the order of the indexes returned from
>>>     selectedIndexes.
>>>     I suggest converting them to persistent indexes first, that way
>>>     subsequent indexes will get updated by the view as you delete them.
>>>     Hope that helps,
>>>     Tony.
>>>
>>>         -----Original Message-----
>>>         *From:* qt-interest-bounces at trolltech.com
>>>         [mailto:qt-interest-bounces at trolltech.com] *On Behalf Of
>>>         *Sven Grunewaldt
>>>         *Sent:* Sunday, 26 April 2009 01:58
>>>         *To:* qt-interest at trolltech.com
>>>         *Subject:* Re: [Qt-interest] How to remove items from
>>>         QSqlTableModelvia QTableView
>>>
>>>         Haha, oh god. I can't believe I didn't notice this... Thanks! :)
>>>         Sometimes you need another pair of eyes to see the obvious.
>>>
>>>         Regards,
>>>         Sven Grunewaldt
>>>
>>>         Am 25.04.2009 17:50, schrieb Scott Aron Bloom:
>>>>         Your algorithm fails for the same reason this algorithm fails:
>>>>
>>>>         QList<  int>  values;
>>>>         //make a list where value[ ii ] == ii
>>>>         for( int ii = 0; ii<  10; ++ii )
>>>>             values<<  ii;
>>>>
>>>>
>>>>         // remove value 3, 4, 5
>>>>         values.removeAt( 3 );
>>>>         values.removeAt( 4 );
>>>>         values.removeAt( 5 );
>>>>
>>>>         // which actually removes 3,5 and 7 (I think... :) )
>>>>         The problem is, since you are removing index.row() 1 at a time, your row
>>>>         value will most likely NOT be valid after the remove.
>>>>
>>>>
>>>>         Scott
>>>>
>>>>
>>>>            
>>>>>         -----Original Message-----
>>>>>         From:qt-interest-bounces at trolltech.com  [mailto:qt-interest-
>>>>>         bounces at trolltech.com] On Behalf Of Sven Grunewaldt
>>>>>         Sent: Saturday, April 25, 2009 8:31 AM
>>>>>         To:qt-interest at trolltech.com
>>>>>         Subject: [Qt-interest] How to remove items from QSqlTableModel via
>>>>>              
>>>>         QTableView
>>>>            
>>>>>         Hi,
>>>>>
>>>>>         I have a QTableView which lies on top of a QSqlTableModel and a Button
>>>>>         to remove the currently selected rows. It seems that my implementation
>>>>>         of the buttons function does something wrong.
>>>>>         Sometimes not all selected items are removed and I just can't see why,
>>>>>         maybe someone finds my mistake:
>>>>>
>>>>>         void BerichteOrk::on_removeSchuleButton_clicked()
>>>>>         {
>>>>>               const QModelIndexList tmp =
>>>>>         schuleView->selectionModel()->selectedIndexes();
>>>>>
>>>>>               foreach (QModelIndex index, tmp)
>>>>>               {
>>>>>                   schuleModel->removeRow(index.row());
>>>>>               }
>>>>>         }
>>>>>
>>>>>         Regards,
>>>>>         Sven Grunewaldt
>>>
>> ------------------------------------------------------------------------
>>
>> _______________________________________________
>> Qt-interest mailing list
>> Qt-interest at trolltech.com
>> http://lists.trolltech.com/mailman/listinfo/qt-interest
>>    
>
> ------------------------------------------------------------------------
>
> _______________________________________________
> Qt-interest mailing list
> Qt-interest at trolltech.com
> http://lists.trolltech.com/mailman/listinfo/qt-interest
>    

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.qt-project.org/pipermail/qt-interest-old/attachments/20090428/f75b5439/attachment.html 


More information about the Qt-interest-old mailing list