Tôi đang cố gắng hiển thị các chuỗi ngôn ngữ khác nhau trong ứng dụng qt của mình bằng cách chèn từng ngôn ngữ vào QMap<QString, QString>
để nó có thể được sử dụng lại ở một số nơi và đưa vào các Hộp tổ hợp khác nhau trong ứng dụng . Tôi làm điều này bằng tạo QMap
như vậy trong ctor:Các ký tự Unicode trong ứng dụng qt không hiển thị
m_langMap.insert(QString::fromWCharArray(L"English"), "english");
m_langMap.insert(QString::fromWCharArray(L"Dansk"), "dansk");
m_langMap.insert(QString::fromWCharArray(L"Nederlands"), "dutch");
m_langMap.insert(QString::fromWCharArray(L"Čeština"), "czeck");
m_langMap.insert(QString::fromWCharArray(L"Slovenský"), "slovak");
m_langMap.insert(QString::fromWCharArray(L"Magyar"), "hungarian");
m_langMap.insert(QString::fromWCharArray(L"Român"), "romanian");
m_langMap.insert(QString::fromWCharArray(L"Latviešu"), "latvian");
m_langMap.insert(QString::fromWCharArray(L"Lietuvių"), "lithuanian");
m_langMap.insert(QString::fromWCharArray(L"Polski"), "polish");
m_langMap.insert(QString::fromWCharArray(L"Português"), "portuguese");
m_langMap.insert(QString::fromWCharArray(L"Español"), "spanish");
m_langMap.insert(QString::fromWCharArray(L"Français"), "french");
m_langMap.insert(QString::fromWCharArray(L"Italiano"), "italian");
m_langMap.insert(QString::fromWCharArray(L"Svenska"), "swedish");
m_langMap.insert(QString::fromWCharArray(L"Русский"), "russian");
m_langMap.insert(QString::fromWCharArray(L"Українська"), "ukranian");
m_langMap.insert(QString::fromWCharArray(L"Русский"), "russian");
m_langMap.insert(QString::fromWCharArray(L"中文"), "chinese");
m_langMap.insert(QString::fromWCharArray(L"日本語"), "japanese");
sau đó tôi chèn chúng vào combo box:
QMap<QString, QString>::const_iterator it = m_langMap.begin();
while (it != m_langMap.end())
{
ui->comboBox->addItem(it.key());
++it;
}
Khi chạy ứng dụng, tôi thấy như sau:
Tuy nhiên, nếu tôi tạo tệp .ui riêng và chèn bản đồ theo cùng một cách, tôi thấy như sau (ngay cả khi tôi bao gồm điều này Parate Dialog class vào cùng một ứng dụng), vì vậy rõ ràng không có vấn đề về font nào mà App không biết cách render các bộ ký tự khác nhau .... nhưng tôi không thể hiểu tại sao cái đầu tiên sẽ không render bộ ký tự ?
Ai đó có thể cho tôi biết lý do tại sao lần đầu tiên không hoạt động nhưng thứ hai không hoạt động? Tôi đã kiểm tra Nhà thiết kế và Miền địa phương của nó được đặt thành 'C, Mặc định' trong cả hai tệp ui tôi đã hiển thị bên dưới. Tôi dường như không thể tìm ra điều gì khác đang gây ra sự khác biệt cho người đầu tiên không làm việc, và thứ hai không hoạt động trong cùng một ứng dụng.
Cảm ơn bạn đã trợ giúp!
Các thử nghiệm Dialog khác:
Tôi tin rằng tất cả các tệp được lưu dưới dạng UTF-8 ngay bây giờ (mặc dù có cách kiểm tra từng tệp và cách lưu tệp đó chưa?) Trong Công cụ tạo> Công cụ> Trình chỉnh sửa văn bản mã hóa tệp được đặt thành UTF- 8 ngay bây giờ. Các tệp đến từ svn từ một dự án hiện có, vì vậy tôi không chắc chắn về cách chúng được lưu ban đầu. Làm thế nào tôi có thể chuyển đổi chúng sang UTF-8 thông qua dòng lệnh (Unix)? – Tim
Đây là nghĩa vụ phải làm việc, tuy nhiên nó không hoạt động trên Ubuntu 12.04 rõ ràng - file -i warning_accept_dialog.cpp warning_accept_dialog.cpp: text/x-c; charset = us-ascii 325 ubu/home/tim/work/src/GUI convmv --notest -fus-ascii -tutf8 warning_accept_dialog.cpp Phiên bản Perl của bạn có bọ chét # 37757 # 49830 Sẵn sàng! 326 ubu/home/tim/work/src/GUI file -i warning_accept_dialog.cpp warning_accept_dialog.cpp: text/x-c; charset = us-ascii dường như không thay đổi. Ive đã thử một số combo và vẫn là kết quả tương tự. – Tim
Trong QtCreator tôi đã thử Edit-> Selected Encoding-> Save File. Vẫn không hiển thị như utf8. Tôi thấy rằng tôi phải thêm tệp mới, sao chép/dán toàn bộ tệp của mình ...và tệp mới đã được lưu dưới mã hóa utf8 và cuối cùng nó đã hoạt động! – Tim