Qtの開発経験のヒント81-90

出典:http://www.1994july.club/seo/?p=2803

  1. QColor完全カラーパッケージでQtは、例えば、RGB、HSB、CMY、HSL、対応はtoRGB、toHsv、toCmyk、toHsl、提供されるさらなる支持透明性だけでなく、色値に変換16進として、変換の様々なサポートフォーマット。
QColor color(255, 0, 0, 100); qDebug() << color.name() << color.name(QColor::HexArgb); //输出 #ff0000 #64ff0000 
  1. 例外のQVariant強力タイプ、ストレージプロファイルの間に、ユニバーサルタイプであると言うことができる、それはしばしばQVariant変換を使用しますが、QVariantデフォルトは時々、など様々な変換のtoString、toFloat、付属していますが、十分ではない、例えばQVariantからQColorを行くために、しかし、我々は普遍的なアプローチを使用する必要があります。この時間を関数toColorを提供していない必要があります。
if (variant.typeName() == "QColor") {
    QColor color = variant.value<QColor>();
    QFont font = variant.value<QFont>();
    QString nodeValue = color.name(QColor::HexArgb);
}
  1. 後者は、文字列がわけではない正しい中国語、英語の場合のsetPropertyで、好ましくはtoStdStringとQTのQStringとのconst char型の間の変換*()。C_str()の代わりにtoLocal8Bit()。ConstData()、ノーマル。

  2. QT信号とスロット機構は、時には、我々はこのような形態Aの親クラスとして複数の階層形式である場合、器具または更新処理する形式の信号の多くを通過し、Qtは、ユニークなコア機能の一つであり、非常に高速なハードウェアでありますD形に送信する信号の形式は、質問フォームBの窓を通って行かなければならない場合、フォームB、フォームBは、親クラスの形態C、形態Cは、サブフォームDを有していますC、その後はとてもはるかに混沌となり、信号に関連する様々な信号を接続し、本体Dのジョブを形成し、単一のグローバルクラスappeventの実施形態では、ここで共通信号アップを追加することを検討し、次に対応するAを形成し、管理します結合appevent信号、清潔で新鮮で清浄な溝缶機能に対応appevent信号を結合フォームD。

  3. あなたが中国を表示したい場合は、ファイルがロードされたwidgets.qmすることができ、英語での右クリックメニューをデフォルトQTextEdit、Qtのプログラムは、複数の翻訳ファイルではなく、紛争をインストールすることができます。

  4. カスタム入力を作るために使用することができ、グローバルQtのフォーカス切替信号がfocusChangedあります。Qt4を、このような二つの信号QEvent :: RequestSoftwareInputPanelをインターセプトします値、デフォルトでインストールされた入力コンテキストを、表示された印刷a.inputContextにおける主な機能として、コンテキストのデフォルトの入力方法によってインストールが退行となるようにQEvent :: CloseSoftwareInputPanel、もグローバルイベントフィルタは依然として2つの信号を認識しないインストール、あなただけ空であるインプットメソッドコンテキストを取り付ける手段、とすることができる主な機能(0)にa.setInputContextを実行する必要があります。

  5. Qt5.10、フォームコントロールQTableWidgetまたはデフォルトQTableView最小の列幅を15に変更した後、あなたは適用されません小さすぎる幅テーブル列を、設定した場合、QTの新バージョンは、取るので、以前のバージョンでは、0であります最小の列幅。だから、あなたが設定する必要が幅より小さな列を設定したい場合はUI-> tableView-> horizo​​ntalHeader() - > setMinimumSectionSize(0);

  6. QT源は、ZIPファイル解凍クラスQZipReader、GUIプライベートモジュールにおける圧縮型QZipWriterとして、等モジュール、例えばGUIプライベートウィジェットプライベート、に対応する秘密に隠されている、いくつかの非公開ブラック技術を直接使用することができない内蔵しました、使用にQT + = GUI-プライベートでプロを導入する必要があります。

#include "QtGui/private/qzipreader_p.h"
#include "QtGui/private/qzipwriter_p.h" QZipReader reader(dirPath); QString path(""); //解压文件夹到当前目录 reader.extractAll(path); //文件夹名称 QZipReader::FileInfo fileInfo = reader.entryInfoAt(0); //解压文件 QFile file(filePath); file.open(QIODevice::WriteOnly); file.write(reader.fileData(QString::fromLocal8Bit("%1").arg(filePath))); file.close(); reader.close(); QZipWriter *writer = new QZipWriter(dirPath); //添加文件夹 writer->addDirectory(unCompress); //添加文件 QFile file(filePath); file.open(QIODevice::ReadOnly); writer->addFile(data, file.readAll()); file.close(); writer->close(); 
  1. 理論的には、シリアルおよびネットワークデータを送受信デフォルトでは非同期である、オペレーティングシステムに自動的にスケジューリング、スタックインタフェースを取得することはありません、オンラインのデータ送受信インターフェースは、メインスレッドが動作して、リアルタイムのかかるが、いくつかの卵を引かれる詰まったと言う人たちそして、術後の治療ではなく、送信およびデータ演算処理を少量のいくつかは、一般的にハンドルに使用糸に推奨されていないプロジェクト内のデータを受信し、スケジューリングオーバーヘッドにスレッドのニーズ、内部のスローを通すために全力を尽くす、スレッドは万能薬ではありません。本当に必要なときにのみ、このようなエンコードとデコードのみなど、いくつかの時間のかかる操作は、スレッドを移動する必要があります。

  2. コンストラクタの幅と高さはおそらく正しくないとされ、コントロールが最初であるということを覚えておいて、コントロールは最初のショーの後に正しい幅と高さの値を設定され、後に取得し表示まず必要である正しい取得します。ショーの後にページ上のコントロール、それ以降のプログラムは、QTabWidgetなどの一部のコンテナコントロールの後に良いスタートである場合には、コンストラクタまたはプログラムの良いスタートではありません表示されません、あなたはおそらく、幅と高さを取りに行く道は、最初のショーにある誰にでも、正しくありません後で取得します。

おすすめ

転載: www.cnblogs.com/1994july/p/12057020.html