QSSの役割も言語別

1526 ワード

QTというライブラリは、OOを使用してプラットフォームをまたいで絶好のパッケージを作ったにほかならない.この中の主な仕事は煩わしいだけだが、それほど多くはない.その中で提供されているQSS機能だけは、私を非常に不思議に思って、作った効果は本当に驚異的で、コードを使うのはこんなに簡単で、しかも長い間中規の中で冷たいC++コンパイラの上でこれらの機能を提供して、本当に業界の新しい風を吹いたことがあります.どんな機能もコンパイラが提供しているのではなく、ライブラリを作成している人は、普通のコンパイラルールでも、いろいろな驚くべき効果を出すことができることを認識させました.
しかし最近1つの问题に出会って、私のQSSの设置の効果は开発机の上でよくて、しかも自分のつけた仮想机の上でもよくて、しかし会社の同僚の机の上で死活して効果がありません.この問題は長い間疑問に思っていたが,今日やっとひらめいて,この問題を解決した.原因はやはりQSSファイル符号化フォーマットにある.クロスプラットフォームと多言語を考慮して、プロジェクトのすべてのソースファイルをUTF 8+BOM形式に変更しました.このQSSファイルも例外ではありません(私のQSSファイルには中国語の文字が含まれていません).QSSを読み取るコードはmain関数にこう書きます.
    QFile qss(":/qss/myfile");
    qss.open(QFile::ReadOnly); // qss               
    qApp->setStyleSheet(qss.readAll()); 
    qss.close();

私は中国語環境で開発したので、ANSI形式でQSSファイルを読み取りましたが、なぜか問題ありません.ファイルヘッダ上の3バイトEF BB BFはすべて中国語として読み出されたと推定され、QSSが持っているキーワードにマッチしようとしたが、合わず無視され、後で読み続けると、それは正しい.しかし、同じファイルの同じコードは、西文環境では、いくつかのアルファベットをマッチングすることに成功する可能性がありますが、後ろのものはもう番号が合わないので、すべて無視されています.これが私のプログラムQSS効果が同僚機でずっと効果がない理由です.解決策は、QSSファイルをANSIに変換したり、BOMを持たないUTF 8形式で再コンパイルしたりして、再び効果が現れます.ああ、そうですか.QSSファイルはts言語ファイルと同じようにもっと内蔵できませんか.
また、QTは自分のミスに対してコントロールがよく、簡単にミスを報告しない.ここではQSSが読めない、番号が合わない、番号が合わない、SIGNALがSLOTに対して番号が合わない、番号が合わない、これはいったい長所なのか、短所なのか.初級開発者が便利になり、実行時の深さ制御の判断が複雑になったような気がします.