初始化QMap<enum,QString>的方式
时间: 2023-07-09 10:08:18 浏览: 396
可以使用以下方式初始化QMap<enum,QString>:
```cpp
#include <QMap>
enum Country {
China,
USA,
Canada
};
int main() {
QMap<Country, QString> countryMap = {
{China, "China"},
{USA, "USA"},
{Canada, "Canada"}
};
return 0;
}
```
在这个例子中,我们首先定义了一个枚举`Country`,然后使用花括号初始化器初始化了一个QMap,将枚举值与对应的字符串一一对应。
相关问题
初始化QMap<自定义类型,QString>的方式
可以使用QMap的构造函数进行初始化,例如:
```
struct MyStruct {
int id;
QString name;
};
QMap<MyStruct, QString> myMap({
{{1, "Alice"}, "123"},
{{2, "Bob"}, "456"},
{{3, "Charlie"}, "789"}
});
```
也可以使用insert函数逐个插入键值对,例如:
```
QMap<MyStruct, QString> myMap;
myMap.insert({{1, "Alice"}, "123"});
myMap.insert({{2, "Bob"}, "456"});
myMap.insert({{3, "Charlie"}, "789"});
```
UI线程读取子线程中QMap<enum,QString>的值
在Qt中,UI线程和子线程之间的通信可以使用信号和槽机制。您可以在子线程中定义一个包含QMap<enum,QString>的信号,然后在UI线程中连接该信号,并在槽函数中读取该QMap的值。
以下是一个简单的示例:
在子线程中定义信号:
```cpp
class MyThread : public QThread
{
Q_OBJECT
signals:
void dataReady(QMap<enum, QString> data);
public:
void run() override
{
QMap<enum, QString> data;
// 填充data...
emit dataReady(data);
}
};
```
在UI线程中连接信号,并定义槽函数:
```cpp
class MyWidget : public QWidget
{
Q_OBJECT
public:
MyWidget(QWidget *parent = nullptr)
: QWidget(parent)
{
MyThread *thread = new MyThread(this);
connect(thread, &MyThread::dataReady, this, &MyWidget::onDataReady);
thread->start();
}
private slots:
void onDataReady(QMap<enum, QString> data)
{
// 读取data中的值...
}
};
```
在上面的示例中,当MyThread发出dataReady信号时,onDataReady槽函数将被调用,并传递QMap<enum,QString>类型的数据。在该函数中,您可以轻松地读取该QMap的值并在UI中显示。
阅读全文