Seite 1 von 1

Warnungen beim füllen von QTablewidget...

Verfasst: 2. Februar 2010 20:35
von RobRoy1304
System/OS: QtCreator / Linux(Ubuntu 9.10)

Hallo,

ich bekomme folgende Warnungen beim Füllen von QTableWidgets:
  • QObject::connect: Cannot queue arguments of type 'Qt::SortOrder'
    (Make sure 'Qt::SortOrder' is registered using qRegisterMetaType().)
Ich habe mehrere Tabellen(verschiedene Tabs) wo ich Daten aus einer Sqlite-Datenbank anzeige. Bei den Tabellen ist die Sort-Funktion eingeschalten, der Übersicht wegen. Ausserdem habe ich jeweils eine Filterfunktion intregriert, um Datensätze leichter zu finden. Der Filter oder besser gesagt die Maske ist ein String in einem Edit-Feld das bei jeder Änderung die Tabelle löscht und die Datensätze, sofern diese der Maske entsprechen, darstellt.

z.B.Füllmethode:

Code: Alles auswählen

CMaker mk; //klasse mit daten eines datensatzes

pTable->setSortingEnabled(false);

for(int i=pTable->rowCount()-1;i>=0;i--) // pTable=QTableWidget
    pTable->removeRow(i);//delete all rows

while(lsIds.count()>0)//QList<int> mit ids der datensätze
{
        if(!m_pDb->maker_get(lsIds[0],mk))//datenbankzugriff->datensatz holen
        {
            b=false;
            break;
        }
        else
        {
            if(!maker_insert_item(pTable,mk,ITEM_POSITION_BOTTOM))//zeile hinzufügen
            {
                b=false;
                break;
            }
        }
        lsIds.removeFirst();
}
lsIds.clear();

pTable->setSortingEnabled(true); //hier erscheint die warnung
Die Warnung erscheint beim 'Wiedereinschalten' der Sort-Funktion. Entferne ich die Aufrufe von pTable->setSortingEnabled(), habe ich zwar keine Warnungen mehr, dafür aber ein anderes Problem. Dann bleiben einige Spalten der der Tabelle leer !?! Dies ist ganz unterschiedlich, je nachdem nach welcher Spalte ich das vorher sortiert habe. Nur die erste Spalte ist nie leer.

Nun meine Frage, kann ich das Problem mit einen eigenen Model der Tabelle lösen? Wie heisst die Klasse des Table-Models und wie setze ich das Model im QTableWidget?

Ich bin QT-Neuling, ist mein erstes Projekt unter QT....

Danke
Rob

Verfasst: 2. Februar 2010 22:03
von franzf
Steht doch alles da was du wissen musst:

Code: Alles auswählen

QObject::connect: Cannot queue arguments of type 'Qt::SortOrder'
(Make sure 'Qt::SortOrder' is registered using qRegisterMetaType().) 
Ein kurzes Suchen nach qRegisterMetaType in der Doku und du weißt was zu tun ist...
Da das bei nem connect kommt, ist der gepostete Code auch irgendwo wertlos. Du solltest wissen, wo du mit nem Qt::SortOrder connectest!