Qtプログラミング(一)


一、Qt紹介
1、Qtはどんなグラフィックユーザープログラムフレームワークで、下層アプリケーションプログラミングインターフェースAPIの対象向けパッケージはC++言語に基づくクラスライブラリであり、グラフィックユーザーインターフェースの開発に専念しているが、システム呼び出し、ネットワークプログラミング、データベース、2 D/3 Dグラフィック処理の特徴を行うことができる:プラットフォームをまたいで、Linux、Windows、MacOS、iOS、Androidなどのオペレーティングシステム2、なぜQtをC++言語に基づいて選択するのか、簡単で使いやすく、対象(GTK向け)に優れたプラットフォーム間特性(MFC向け)、工業制御、組み込み式
二、Qt環境とコンパイルツール
1、ツールQtアシスタント:Qtリファレンスドキュメント、Qtの各クラスと関数に関連し、Qt開発の必須マニュアルであり、端末はassistantコマンドを通じてQtビルダーを起動することができる:それはソースファイル、ヘッダファイル、インタフェースファイルを解析してコンパイル脚本qmake-projectを生成し、現在のディレクトリのファイルに基づいて、プロジェクトプロファイルxxxを生成する.pro qmakeはxxxによる.Proファイル生成MakefileスクリプトQtデザイナー:インタフェース付きアプリケーションにとって、最も純粋な方法はC/C++コードでプロジェクト全体を書くことですが、この方法は時間と労力がかかります.だから、私たちは一般的にインタフェースをしないで、絵を描く方法を採用して、自動的に対応するコードを生成します.Qtデザイナーが設計したインタフェースファイルをC++コードuic xxxにコンパイルする責任を負う.ui -o xxx.hインタフェースファイルをC++クラスQt創造器にコンパイルする:Qtアシスタント+Qt構築器+Qtデザイナー+Qtインタフェースコンパイラ+テキストエディタはQt作成器に等しく、開発環境を統合する
2、ヘッダファイルとライブラリQtがインストールされると、インストールディレクトリの下に/usr/include/qt 4ディレクトリが作成されます.私たちが使用するヘッダファイルは、このディレクトリの下で共有ライブラリを/usr/lib/i 386-linux-gnu/qt 4と/usr/lib/qt 4ディレクトリの下で静的ライブラリを再ダウンロードする必要があります.
三、最初のQtプログラム
1、Hello Qtコンパイルソースコード生成プロジェクトファイル:qmake-project->hello.Pro生成コンパイルスクリプト:qmake->Makefileコンパイル:make実行:./hello
#include 
#include 
#include 

int main(int argc,char* argv[])
{
	//           
	QTextCodec* codec = QTextCodec::codecForName("utf-8");
	//   Qt     utf-8
	QTextCodec::setCodecForTr(codec);
	QTextCodec::setCodecForLocale(codec);
	QTextCodec::setCodecForCStrings(codec);

	//     App  ,              ,        
	QApplication app(argc,argv);

	//        "Hello Qt"    
    QLabel lab("   Qt");

	//     
	lab.show();
    emit
	return app.exec();
}

2、ヘルプマニュアルPublic Type:アクセス権はpublicのメンバーProperties:アクセス権はprivateのようなメンバーはget/set関数Public Functions:アクセス権はpublicのメンバー関数Public Slots:アクセス権はpublicの溝関数数で、メンバー関数のように使用できます.しかしそれは信号と接続することができ(signal関数と1つの信号と関数をバインドするのと同じ)、違いはQtの信号がSignalsをカスタマイズすることができることです:信号、注意:関数ではありませんて、emitを通じて送信して、自動的にそれと接続する溝関数Static Public Members:静的公有メンバー関数を実行して、このような関数は対象と関係なく、管理するオブジェクトの共通リソースProtected Functions:アクセス権はprotectedのメンバー関数Macros:本クラスに関連するマクロ定義Detailed Description:本クラスの詳細、使用方法、呼び出しのコンテキスト注意事項、一部のクラスではdomeを使用する
四、中国語処理
注意:Qt 4.8ではutf-8文字符号化はデフォルトでサポートされていないため、中国語を使用すると文字化けの内部符号化と外部符号化が発生します.Qtのアプリケーションのコントロールの内部ではutf-16が使用されています.これをアプリケーションの内部符号化と呼びますが、端末を通じて、制御入力の文字は外部符号化/****************************************************************************************************************************************************************************************************************************************************************************************************/QTextCodec=QTextCodec::codecForName("utf-8");//Qtローカルシステムの文字コードQTextCodec::setCodecForLocale(codec);
//Qtプログラムで使用している文字列の文字コードを教えるQTextCodec::setCodecForCStrings(codec);//Qt外部の文字コードを教えるQTextCodec::setCodecForTr(codec);/*************************************************************************************************/
五、信号と溝
1、信号はユーザーあるいはシステムが1つの動作をトリガして、あるウィンドウが変化することを招いて、このコントロールは1つの信号を発射して、信号は1つの関数を呼び出すことができて、必要な時またパラメータを追加することができます例えば:QpushButtonコントロールの中にclicked(void)信号2があって、溝は1つの普通のクラスのメンバー関数で、それは公有的で、私有的で、保護的で、リロードすることができて、上書きすることができて、そのパラメータ、戻り値は任意のタイプで、直接呼び出すことができて普通の関数との違いはそれが信号によってトリガすることができて、自動的に実行します例えば:ウィンドウコントロールQwidgetの中でデフォルトはclose(void)スロット関数があります
3、信号とスロットの接続注意:QObjectはQtのすべてのクラスの親bool QObject::connect(const QObject*sender,//信号送信者const char*signal,//信号署名文字列const QObject*receiver,//信号の受信者const char*method);//スロット関数署名文字列
SIGNAL()信号関数署名を文字列SLOT()に変換スロット関数署名を文字列に変換
#include 
#include 
#include 
#include 

int main(int argc,char* argv[])
{
	QApplication app(argc,argv);
	
	QWidget w;
	w.resize(400,400);
	w.show();

	QPushButton btn("exit");  //    ,  :exit
	btn.show();

	QObject::connect(&btn,SIGNAL(clicked(void)),&w,SLOT(close(void)));
	QObject::connect(&btn,SIGNAL(clicked(void)),&btn,SLOT(close(void)));

	return app.exec();
}

六、窓容器
1つのコントロールは1つのウィンドウであり、すべてのコントロールを同じウィンドウに集約するには、ウィンドウコンテナ1、QMainWindowメインウィンドウコンテナと呼ばれ、通常はタイトルバー、メニューバー、ツールバー、ステータスバー、中央表示領域からなる2、QDIalogダイアログウィンドウコンテナ、複数の異なるインタラクティブコントロール3、QWidgetの純粋なウィンドウコンテナを管理します.これはQMainWindowとQDIalogの親です.
一般的な設定はresize(w,h)ウィンドウのサイズmove(x,y)ウィンドウの位置を設定する
コントロールを作成するときにコンテナオブジェクトのアドレスをコントロールに渡すと、コントロールをコンテナに入れることができます.
七、Qt創造器の使用
1、Qt創造器を開いて端末で実行する:qtcreator、右クリックしてイニシエータにロックする2、プロジェクトファイルを作成する->新規ファイルまたはプロジェクト->Qtコントロールプロジェクト->Qt GUIアプリケーション->プロジェクト名を記入する(中国語を使用しない)->デスクトップ->ウィンドウコンテナを選択する->クラス名、ヘッダファイル名を設定するソースファイル名->インタフェースファイルを作成するかどうかを選択(インタフェースファイル名を設定)3、ウィンドウクラスの構成mainwindow.uiファイルはui_を自動的に生成しますmainwindow.h(Qtクリエイターでは見えない)ui_mainwindow.hヘッダファイルで自動的にUi_が生成されますすべてのmainwindowを含むMainWindowクラス.uiファイルに描かれているコントロールはui_mainwindow.hヘッダファイルではUIネームスペースにMainWindowクラスが自動的に作成され、UI_MainWindowはMainWindowクラスに継承されます.hヘッダファイルには自動的にMainWindowクラスが作成され、デフォルトではQMainWindowが継承され、デフォルトメンバーUI::MainWindow*uiがあり、インタフェースファイルのすべてのコントロールが含まれています.
八、Qt常用コントロール
QLabel:ラベルコントロール簡単なテキストを表示するために使用され、インタフェースで読み取り専用のsetTextで表示内容textを設定してラベル上の文字列を取得し、戻り値はQString QpushButton:ボタンコントロールもsetText、textの重要な機能は信号clicked()をクリックすることであり、ダブルクリック、サスペンション、信号を押す.QRadioButton:ラジオボタン、同じウィンドウの下で1つしか選択できない重要な機能は選択と選択解除信号QLineEditです:単行入力テキストボックスの一般的な操作はその入力内容を取得するQTextEditです:複数行入力テキストボックスは常に大きなファイルを入力するために使用され、入力内容は改行することができます.スクロールバーを持参します.QComboBox:ドロップダウン入力ボックス入力内容は、下ボタンで選択するしかなく、ユーザー入力エラーの一般的な解決方法を防止します.QTextBrower:マルチテキスト表示、リッチテキスト表示をサポート.インタフェースでは読み取り専用で、文字はフォント、色、太字、位置合わせなどの操作を設定できます.QGroupBox:グループボックスで、制御統合管理を入れることができます.最もよく使われるのはQRadioButtonボタンを入れて、1組のボタンは1つしか選択できません.QxxxSilder:スライダは水平、垂直のスライダがあり、進行バーとしても使用できます.QSpinBox:数字スライダはSilderの使い方とほぼ一致しており、数字で表示されているだけです.SilderのSpinBoxの主な操作は、初期値、最大値、進歩値を表示したり、設定したりすることです.
九、Qt創造器の常用ショートカットキーと操作
ショートカットキー:Alt+0:サイドバーCtrl+eを表示/非表示にして0を押す:すべての分割ウィンドウCtrl+eを削除して1を押す:削除当の分割ウィンドウCtrl+eを削除して2を放す:水平分割ウィンドウCtrl+eを放す3を押す:垂直分割ウィンドウCtrl+B+S:すべてのファイルを保存してコンパイル実行Ctrl+B:コンパイル実行Ctrl+R:プロジェクトCtrl+/:注釈/注釈解除Ctrl+I:選択したコードを自動的にインデントCtrl+Shift+R:変数名を一括変更Ctrl+F:検索、代替Ctrl+クリック:定義位置にジャンプShift+F 2:宣言と定義の切り替えAlt+Shift+u:小文字を大文字に変換Alt+u:大文字を小文字に変換F 1:カーソル位置クラスまたはオブジェクトに移動し、クラスのヘルプマニュアルF 4:ヘッダファイルとソースファイルの間をすばやく切り替えます