Skip to content

Commit fba32f1

Browse files
committed
Allow storing QgsField and QgsFields in a QVariant
1 parent ee17eb9 commit fba32f1

File tree

3 files changed

+36
-0
lines changed

3 files changed

+36
-0
lines changed

src/core/qgsfield.h

+4
Original file line numberDiff line numberDiff line change
@@ -154,6 +154,8 @@ class CORE_EXPORT QgsField
154154

155155
}; // class QgsField
156156

157+
Q_DECLARE_METATYPE( QgsField );
158+
157159

158160
/** \class QgsFields
159161
* \ingroup core
@@ -270,4 +272,6 @@ class CORE_EXPORT QgsFields
270272

271273
};
272274

275+
Q_DECLARE_METATYPE( QgsFields );
276+
273277
#endif

tests/src/core/testqgsfield.cpp

+13
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ class TestQgsField: public QObject
3535
void assignment();
3636
void gettersSetters(); //test getters and setters
3737
void equality(); //test equality operators
38+
void asVariant(); //test conversion to and from a QVariant
3839
private:
3940
};
4041

@@ -147,5 +148,17 @@ void TestQgsField::equality()
147148
field2.setPrecision( 2 );
148149
}
149150

151+
void TestQgsField::asVariant()
152+
{
153+
QgsField original( "original", QVariant::Double, "double", 5, 2, "comment" );
154+
155+
//convert to and from a QVariant
156+
QVariant var = QVariant::fromValue( original );
157+
QVERIFY( var.isValid() );
158+
159+
QgsField fromVar = qvariant_cast<QgsField>( var );
160+
QCOMPARE( fromVar, original );
161+
}
162+
150163
QTEST_MAIN( TestQgsField )
151164
#include "testqgsfield.moc"

tests/src/core/testqgsfields.cpp

+19
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ class TestQgsFields: public QObject
3434
void copy();// test cpy destruction (double delete)
3535
void assignment();
3636
void equality(); //test equality operators
37+
void asVariant(); //test conversion to and from a QVariant
3738
private:
3839
};
3940

@@ -125,5 +126,23 @@ void TestQgsFields::equality()
125126
QVERIFY( fields1 != fields2 );
126127
}
127128

129+
void TestQgsFields::asVariant()
130+
{
131+
QgsField field1;
132+
field1.setName( "name" );
133+
QgsField field2;
134+
field2.setName( "name" );
135+
QgsFields original;
136+
original.append( field1 );
137+
original.append( field2 );
138+
139+
//convert to and from a QVariant
140+
QVariant var = QVariant::fromValue( original );
141+
QVERIFY( var.isValid() );
142+
143+
QgsFields fromVar = qvariant_cast<QgsFields>( var );
144+
QCOMPARE( fromVar, original );
145+
}
146+
128147
QTEST_MAIN( TestQgsFields )
129148
#include "testqgsfields.moc"

0 commit comments

Comments
 (0)