2009-06-24 18 views
8

böyle Qt 4.4 bir tablo modeli kurduktan sonra hiçbir otomatik güncellemeler:Sorun -

QSqlTableModel *sqlmodel = new QSqlTableModel(); 

    sqlmodel->setTable("Names"); 
    sqlmodel->setEditStrategy(QSqlTableModel::OnFieldChange); 
    sqlmodel->select(); 
    sqlmodel->removeColumn(0); 

    tableView->setModel(sqlmodel); 
    tableView->show(); 

içeriğinin düzgün görüntülenir ancak düzenleme mümkün değildir, hata:

 QSqlQuery::value: not positioned on a valid record 
+0

Çalıştığınız sorgu için de kod yapıştırır mısınız? – nmuntz

+1

diye bir sorgu yok. QSqlQueryModel için sorgu gerekiyor. Bunun yerine, QSqlTableModel bir tabloyu gösterir (ayrıca düzenlemek için izin verir). "QSqlTableModel, tek bir tabloyu göstermek için düzenlenebilir bir model sağlar ... Sonuç düzenlenebilirdir, çünkü düzenlenebilirdir." Johan Thelin – MadH

cevap

12

Hata bildirdiğinizde, sorunun tam olarak raporunu Qt 4.5.1'de ve örn. here, hala yanlış bir örnek verir (yani, removeColumn çağrısı dahil olmak üzere).

Çevrenizde, DB'de güncellenecek ve muhtemelen düzeltilebilecek QSqlRecord ile ilgili sorunun ne olduğunu kontrol etme fikriyle, beforeUpdate sinyaline bağlı bir slot yazmayı denedim, ancak bunu yapabilirim ' Bunu işe yaratalım - bu kayıt parametresinin yöntemlerine yapılan çağrılar oyuncak uygulamamı BusError ile çakıştırıyor.

Bu yüzden bu fikirden vazgeçtim ve doğru bir şekilde yapmanın yolunun ne olduğuna hiç şüphem yok (görünürlük, modele göre değil, görüşe göre belirlenmelidir? -): removeColumn'u ve yerine Bunun yerine tableView->setColumnHidden(0, true)'u arayın. Bu şekilde kimlikler gizlidir ve her şey çalışır.

Sanırım bir belge hatası olduğunu doğrulayabiliriz ve Qt izleyicide bu konuyla ilgili bir sorun açabiliriz, böylece bir sonraki dokümanda düzeltilebilir, değil mi?

+0

tarafından "Qt geliştirme Vakıflar" dan, teşekkürler! :-) – MadH

+3

tüm itibarımı onaylamak için harcadı :-)) – MadH

0

Bu nedeni dışarı değerlendirdikten sonra hat

sqlmodel->removeColumn(0); 

olduğunu görünüyor, her şey mükemmelsin çalışmak tly'ait. Böylece, çünkü Johan "Qt geliştirme Vakıflar" dan örnekte, masanın ;-) Söylediklerimin "öyle görünüyor"

DÜZENLEME içinde kimlikleri göstermek için değil başka bir yol bulmak zorundasınız Thelin ayrıca ilk sütunu kaldırdı. Yani, birileri bunu denerse ve sonuçları bildirirse iyi olur.

0

PyQt'de Qt 4.6.1 kullanıyorum ve sorun hala burada. "RemoveColumn (0)" kaldırılıyor sorunu çözüyor.