基本用法
内置支持所有QMetaType::Type里的类型如:int,QString,QFont等甚至QList直接赋值:
QVariant tmp=QString(u8"测试");
qDebug() <<tmp.toString();
自定义类型
先注册:
struct MyClass
{
QString name;
int age;
}
Q_DECLARE_METATYPE(MyClass)
后使用:
MyClass myClass;
QVariant v3 = QVairant::fromValue(myClass);
if (v2.canConvert<MyClass>()){
MyClass myClass2 = v2.value<MyClass>();
}
在ComboBox的item中存储用户定义数据
QComboBox::addItem(const QIcon &aicon, const QString &atext, const QVariant &auserData)
void Widget::on_btnIni_clicked()
{
QMap<QString, int> City_Zone;
City_Zone.insert(u8"北京",10);
City_Zone.insert(u8"上海",21);
City_Zone.insert(u8"天津",22);
City_Zone.insert(u8"大连",411);
City_Zone.insert(u8"锦州",416);
City_Zone.insert(u8"徐州",516);
City_Zone.insert(u8"福州",591);
City_Zone.insert(u8"青岛",532);
ui->comboBox->clear();
foreach(const QString &str,City_Zone.keys())
ui->comboBox->addItem(str,City_Zone.value(str));
}
void Widget::on_comboBox_currentIndexChanged(int index)
{
QString zone=ui->comboBox->currentData().toString();
ui->plainTextEdit->appendPlainText(zone);
QVariant tmp=QString(u8"asd");
qDebug() <<tmp.toString();
}