Qt、コントロールの1つの総合的な例から始めます


前言
Qtの開発環境をインストールした後,Qtの文字列(QString),コンテナクラス(QList,QLinkedList,QVector,QMap,QHash…),各種コントロールの学習を開始する.具体的な使用は基礎知識に属し,本稿ではその中の比較的重要で興味深い部分を総合的な例で検討し,またQStringの暗黙的共有問題もある.ソース@github:https://github.com/LeeHDsniper/LearnQt/tree/master/CH210
プログラム実行効果
インテリジェントポイント
インタフェースは確かに簡単ですが、その中で関連する知識点はすべて重要です:1.Qt Createrのデザインを使用してレイアウト2.パートナモード3.水平レイアウト、垂直レイアウト4.ボタンのいくつかの特性
Qt Createrのデザイン
グラフィックチャットのインタフェースエディタは確かに私たちに多くの便利さをもたらして、C#の開発の中で、ずっとグラフィックインタフェースの設計モードから離れませんが、1つの利点はグラフィックインタフェースのすべての編集操作で、最後にコード形式に変換して、つまり代コードの上で変化を見ることができます.しかしQtCreaterのdesignerモードでは,その変更は再コード化されずuiのXMLファイルのみが書き換えられる.なるべく手書きコードのパターンを使って開発した方が良いでしょう.この例では、上図のインタフェースの上にある3番目のボタン(パートナモード)と6番目のボタン(水平レイアウト)が使用されます.Designerの他の使用方法は、ほとんどのグラフィックインタフェースデザイナと同様に、パートナーモードやレイアウトなどの異なる点を処理します.各コントロールの属性修正、イベント「登録」は同じです.
レイアウト
Qtは、水平配列レイアウト、垂直配列レイアウト、メッシュ配列レイアウトを提供します.垂直配列レイアウト:|Lable 1||Button 1||Button 2|上記3つのコントロールが水平配列レイアウト水平配列レイアウト:|Lable 1|Button 2|Button 3|上記3つのコントロールが垂直配列の3つのレイアウトの使用は後述する.
ボタンのいくつかの特性
  • default defaultはQPShButtonの属性の1つであり、defaultがtrueに設定されている場合、ユーザーがenterキーを押すと、対応するのはdefaultがtrueに設定されているキーを押すことに相当し、この属性の使用にはいくつかの制限がある.

  • This property holds whether the push button is the default button.
    Default and autodefault buttons decide what happens when the user presses enter in a dialog.
    ——[Qt公式ドキュメント]
    2.enable
    設定ボタンが押下可能かどうか(click信号をトリガ)
    暗黙的な共有
    暗黙的な共有はライトバックレプリケーション(copy on write)とも呼ばれ、2つのオブジェクトが1つのデータを共有する場合(浅いコピーによるデータブロックの共有)データが変更されない場合、データのコピーは行われません.また、オブジェクトがデータを変更する必要がある場合、深いコピーが実行されます.浅いコピー:オブジェクトの参照の深いコピーをコピーします.オブジェクトの完全なコピーを生成する暗黙的な共有は、オブジェクトへのポインタを維持し、オブジェクト内でインデックスを維持します.カウンターで.例:
    QString str1="hello";
    QString str2=str1;

    str 1のリファレンスカウンタは2に設定され、str 2は実際にはstr 1のリファレンスにすぎません.次に例を示します.
    ......
    str2[0]='e';

    str 2はstr 1の完了コピーとなり、str 1とstr 2の参照カウンタはいずれも1に設定されます.
    次節ではQt 5のレイアウト管理の分割ウィンドウについて述べる