因此,我需要使此函数的结果唯一。
我的任务很简单:我只想显示文本处理应用程序的编码选择对话框。
我的第一个天真解决方案如下所示:
QList<QByteArray> encodings = QTextCodec::availableCodecs ();
QSet<QTextCodec*> unique_codecs;
unique_codecs.insert (QTextCodec::codecForName ("autodetect"));
unique_codecs.insert (QTextCodec::codecForName ("system"));
foreach (QByteArray e, encodings)
{
if (QTextCodec* c = QTextCodec::codecForName (e))
{
if (!unique_codecs.contains (c))
{
m_encodings.append (e); // QStringList to store encodings
unique_codecs.insert (c);
}
}
}
你还有其他建议吗?
最佳答案
有availableMibs()
方法可返回MIB列表-这是编解码器的唯一ID,不会重复。然后QTextCodec::codecForMib(int)
将让您检索有问题的编解码器。
foreach (int mib, QTextCodec::availableMibs()) {
m_encodings << QTextCodec::codecForMib(mib)->name();
}
在我的机器上,我得到111个可用的mib和804个可用的编解码器名称
关于c++ - QTextCodec::availableCodecs返回编解码器重复项,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19608983/