Qt/C++ 開発経験のヒント 291 ~ 295

国内サイト:https
://gitee.com/feiyangqingyun海外サイト: https: //github.com/feiyangqingyun

  1. Pro での Linux システムの区別に関しては、Qt4 スイートは linux タグを認識しないため、unix:!macx で表す必要があります。したがって、Qt4 との互換性が必要な場合は、unix:!macx を使用することをお勧めします。
//如果是linux上的Qt4套件则下面只会打印 unix linux
//如果是linux上的Qt5/Qt6套件则下面会打印 linux unix linux
linux {
    
    message(linux)}
unix {
    
    message(unix)}
unix:!macx {
    
    message(linux)}
  1. 一部のクロスプラットフォーム プロジェクト、特にサードパーティ ライブラリの導入が必要なプロジェクトでは、対応するフォルダー内のライブラリ ファイルを、異なるシステムの異なるビット数に従って導入する必要があり、プロジェクト内での識別と処理が必要になります。
#区分不同的系统
path_sys = win
win32 {
    
    
path_sys = win
}

linux {
    
    
path_sys = linux
}

#Qt4套件不认识linux标记
unix:!macx {
    
    
path_sys = linux
}

macx {
    
    
path_sys = mac
}

android {
    
    
path_sys = android
}

#区分不同的位数 x86_64/amd64/arm64/arm64-v8a
path_bit = 32
contains(QT_ARCH, x.*64) {
    
    
path_bit = 64
} else:contains(QT_ARCH, a.*64) {
    
    
path_bit = 64
} else:contains(QT_ARCH, a.*64.*) {
    
    
path_bit = 64
}

#对应系统和位数的库目录
path_lib = lib$$path_sys$$path_bit
//下面会打印 libwin32/libwin64/liblinux32/liblinux64/libmac32/libmac64/libandroid32/libandroid64
message($$path_lib)

//使用方式
INCLUDEPATH += $$PWD/include
LIBS += -L$$PWD/$$path_lib/ -lxxx
  1. プロジェクトのコンパイルの失敗を避けるために、一部の Qt ビルド環境が現在のプロジェクト要件を満たしていないことが検出された場合、プロジェクトを無効にすることができます。
#禁用项目后整个项目的代码文件是灰色的不可用,编译会跳过。
lessThan(QT_MAJOR_VERSION, 6) {
    
    
error("最低要求Qt6才能用")
}
  1. QButtonGroup ボタン グループを使用してボタンを追加するとき、buttonClicked(int) 信号を使用する必要がある場合は、ボタンを追加するときにボタン番号を手動で指定する必要があります。それ以外の場合、デフォルトの番号は -1 であるため、値は負の数になります。 buttonClicked(int) がトリガーされると、期待と齟齬が生じます。当初デフォルトではボタンの追加順に自動的にインデックスがインクリメントされると思っていましたが、実際はそうではなく、処理されません。こちらです。必ずボタン番号を指定してください。
QButtonGroup *btnGroup = new QButtonGroup(this);
connect(btnGroup, SIGNAL(buttonClicked(int)), ui->stackedWidget, SLOT(setCurrentIndex(int)));
//第二个参数指定按钮编号
btnGroup->addButton(ui->btn1, 0);
btnGroup->addButton(ui->btn2, 1);
  1. QCustomplotの描画パフォーマンスの改善について。
  • ペンの幅が 1 より大きい線は避けてください。デフォルトは 1 です。描画されるデータの量が多い場合、パフォーマンスが大幅に低下するため、線の幅を 1 より大きく設定することは強くお勧めしません。
  • 数千のポイントを持つシェイプ間のチャネル塗りつぶしなど、複雑な塗りつぶしは避けてください。
  • チャートのドラッグ中に setNoAntialiasingOnDrag(true) を設定すると、応答速度が向上します。
  • 特に塗りつぶしでは、いかなる種類のアルファ (透明) カラーも使用しないでください。
  • アンチエイリアス setNotAntialiasedElements(true) をオンにしないようにしてください。
  • setData を使用するなど、完全なデータ セットを繰り返し設定することは避けてください。実行中の測定など、ほとんどのデータ ポイントが同じままである場合は、代わりに addData を使用します。
  • より効率的な QCPGraph::data() を通じて既存のデータにアクセスして操作することをお勧めします。
  • opengl アクセラレーションをオンにする 最初のステップは、マークをオンにし、pro で DEFINES += QCUSTOMPLOT_USE_OPENGL の行を追加することです。2 番目のステップは、opengl ライブラリ LIBS += -lopengl32 -lglu32 をリンクすることです。一部の Qt バージョンでは、QT += ウィジェットを積極的に導入する必要がある場合もあります。実際にテストした結果、opengl をオンにすると、主に CPU 使用率の削減により、60fps などの高周波描画のパフォーマンスが向上することがわかりました。描画頻度が低いと CPU 使用率も増加します。したがって、実際のシナリオに応じて処理することをお勧めします。これはデータ量とは関係なく、データの描画速度に関係しているようです。
  • キャンバスのアンチエイリアス プロパティをオフにします (graph->setAntialiased(false)、graph->setAntialiasedFill(false)、graph->setAntialiasedScatters(false))。デフォルトは true です。
  • キャンバスでアダプティブ サンプリングをオンにします (graph->setAdaptiveSampling(true))。デフォルトは true なので、積極的に設定する必要はありません。

おすすめ

転載: blog.csdn.net/feiyangqingyun/article/details/135081188