[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