I.はじめに
記事では、XMLデータファイルに設計された輸出規制を担当して、この記事では、部分的にエクスポートされたXMLデータファイルのインポートを担当し、その後、自動的にキャンバス上の対応するコントロールを生成し、Qtは組み込みのXMLデータ解析機能、非常に強力ですQtXmlパッケージアセンブリで、Qtは、特にGUIコントロール、主要なオペレーティングシステムプラットフォームの多くの機能をカプセル化するという利点があり、確かに非常に大きなワンストップスーパーマーケットのGUIで、ネットワークコンポーネント、非常に強力ではないが、しかし、いくつかの基本的な対処しますアプリケーションは十分以上です。データをエクスポートプロパティおよびプロパティ値のリストに応じて代わりのXMLの子ノードの格納され、ノードの解析中に横断する必要がQDomNamedNodeMap ATTRS = element.attributes()、名前及び属性値を属性XML、次に一つずつサイクル名前と値、QDomNode N = attrs.item(i)を除去することができる。QStringのnodeNameの= n.nodeName(); QStringののnodeValue = n.nodeValue()。
経験住所:https://pan.baidu.com/s/1A5Gd77kExm8Co5ckT51vvQ抽出コード:877pファイル:実行可能ファイルを.zipファイル
第二に、機能の実現
- すべてのコントロールは自動的にプラグインがリストファイル、120以上のデフォルトの組み込みコントロールを生成しロードします。
- キャンバスをドラッグすると、自動的に対応する制御、WYSIWYGを生成します。
- バーの中国の財産権、対応するプロパティを変更するには、すぐに白の使用に非常に適し、シンプルで直感的な、対応する選択制御に適用されます。
- 元のテキスト翻訳属性フィールドのマッピングメカニズム、高効率で、簡単にプロパティバー他の言語を拡張することができます。
- 自動的にドロップダウンボックス列挙値などを含む、右欄に示したすべてのコントロールとプロパティのプロパティを抽出します。
- 手動でのサポートは、プラグインファイルインポートプラグインで外部ファイルを選択します。
- すべてのコントロールは、現在のキャンバスの構成情報はXMLファイルにエクスポートすることができます。
- 手動でXMLファイルに基づいてxmlファイルのオープンレイアウト制御、自動負荷制御を選択することができます。
- ボックスのアナログデータ、テキスト入力ボックスを、スライダーを引っ張って確認することができ、3つの方法でデータ・アプリケーションは、すべてのコントロールを生成します。
- コントロールは、左右の微調整をすることができ、キーボードの上下位置は、任意の解像度に適応サイズを変更引っ張っ8つの方向をサポートしています。
- 彼らは、3通りの方法で収集されたネットワーク、データベース・データ・セットを収集し、シリアルコレクションを開きました。
- コードは、非常に簡潔な、非常に詳細なメモであるプロトタイプとして構成することができ、自分自身のより多くの機能を開発します。
- 純粋なQtの中で書かれた、Qtはコンパイラ+任意の+任意のシステムの任意のバージョンをサポートしています。
第三に、レンダリング
第四に、コアコード
void frmMain::openFile(const QString &fileName)
{
//打开文件
QFile file(fileName);
if (!file.open(QFile::ReadOnly | QFile::Text)) {
return;
}
//将文件填充到dom容器
QDomDocument doc;
if (!doc.setContent(&file)) {
file.close();
return;
}
file.close();
//先清空原有控件
QList<QWidget *> widgets = ui->centralwidget->findChildren<QWidget *>();
qDeleteAll(widgets);
widgets.clear();
//先判断根元素是否正确
QDomElement docElem = doc.documentElement();
if (docElem.tagName() == "canvas") {
QDomNode node = docElem.firstChild();
QDomElement element = node.toElement();
while(!node.isNull()) {
QString name = element.tagName();
//存储坐标+宽高
int x, y, width, height;
//存储其他自定义控件属性
QList<QPair<QString, QVariant> > propertys;
//节点名称不为空才继续
if (!name.isEmpty()) {
//遍历节点的属性名称和属性值
QDomNamedNodeMap attrs = element.attributes();
for (int i = 0; i < attrs.count(); i++) {
QDomNode n = attrs.item(i);
QString nodeName = n.nodeName();
QString nodeValue = n.nodeValue();
//qDebug() << nodeName << nodeValue;
//优先取出坐标+宽高属性,这几个属性不能通过setProperty实现
if (nodeName == "x") {
x = nodeValue.toInt();
} else if (nodeName == "y") {
y = nodeValue.toInt();
} else if (nodeName == "width") {
width = nodeValue.toInt();
} else if (nodeName == "height") {
height = nodeValue.toInt();
} else {
propertys.append(qMakePair(nodeName, QVariant(nodeValue)));
}
}
}
//qDebug() << name << x << y << width << height;
//根据不同的控件类型实例化控件
int count = listWidgets.count();
for (int i = 0; i < count; i++) {
QString className = listWidgets.at(i)->name();
if (name == className) {
QWidget *widget = listWidgets.at(i)->createWidget(ui->centralwidget);
//逐个设置自定义控件的属性
int count = propertys.count();
for (int i = 0; i < count; i++) {
QPair<QString, QVariant> property = propertys.at(i);
widget->setProperty(property.first.toLatin1().constData(), property.second);
}
//设置坐标+宽高
widget->setGeometry(x, y, width, height);
//实例化选中窗体跟随控件一起
newSelect(widget);
break;
}
}
//移动到下一个节点
node = node.nextSibling();
element = node.toElement();
}
}
}
第五に、コントロールを導入
- 150以上の絶妙な制御、ように太陰暦、セレクタをスライドさせ、ボタンを強調表示し、ダッシュボードのさまざま、プログレスバー、ボール、コンパス、グラフ、スケール、温度計、ナビゲーションバー、ナビゲーションバー、flatuiの進行を覆い。コントロールの統合の数よりもはるかに多くのQWT。
- 各クラスは、以下のプロジェクトのソースコード形式に統合個々の制御を容易にするために、ゼロが符号量を達成するために、各制御ファイルおよびヘッダファイルを結合する、別の対照として、独立して他のファイルとは無関係であることができます。QWT性の高い結合されたコントロールクラスを、連動、すべてのコードが含まれている必要があり、コントロールのいずれかを使用します。
- 、描画するために、任意のQtバージョンQt4.6 Qt5.12などmingwの、MSVC、GCCコンパイラのサポートをサポートするために、そのような窓+ Linuxの+マック+文字化けしません組み込みLinuxのような任意のオペレーティングシステムをサポートするすべての純粋なQtの、QWidgetの+ QPainterのを書きます直接のQt Creatorを、組み込みコントロールに統合されており、同じを使用することができ、効果のほとんどは、限り、いくつかのプロパティが設定されているように非常に便利です。
- 各制御に対応する制御を含有するDEMO別のソースは、便利な参照を有します。また、すべてのコントロールDEMOの統合された使用を提供します。
- 各コントロールのソースコードは、中国の注釈を詳細なカスタムコントロールを書くことを学ぶのは簡単、統一された設計仕様に基づいて作成されています。
- 各コントロールのデフォルトの色とデモに対応する色がとても美しいです。
- 130以上の可視制御六の不可視コントロール。
- 一部のコントロールは、スタイルのスタイルの選択、複数の選択肢のスタイルインジケータを数多く提供しています。
- すべてのコントロールは、適応伸ばしフォームを変更します。
- ドラッグデザインをサポートする統合デザインカスタム属性、WYSIWYGは、XML形式でインポートおよびエクスポートをサポートしています。
- デモに付属しているActiveXコントロールは、すべてのコントロールは、ブラウザのIEで直接実行することができます。
- Fontawesome統合グラフィックスフォント+グラフィックフォントの何百ものAlibabaのiconfontコレクション、フォント楽しいグラフィックがもたらします。
- 最終的にはすべてのコントロールと(などのdllかそこら、)ダイナミックライブラリファイルを生成するには、ドラッグでの使用のために設計されたqtcreatorに直接統合することができます。
- 次に、ユーザは、大きな需要がある場合は、既にQMLバージョンでは、後者は、PyQtはバージョンを検討します。
- 任意の制限なしカスタムオープン動的ライブラリ内のプラグイン(永久無料)、バックドア、使いやすさ。
- qt5.12.3 msvc2017 32 + 64 mingwの32 + 64内を含む26現在利用可能バージョンのDLL、。
- コントロールを向上させ、コントロールを改善するために、随時、定期的に更新SDK、すべての提案を歓迎するために、ありがとうございました!
- Qtの入門本は、「Qtの創造主クイックスタート」「Qt5プログラミングエントリのフオYafei」、Qtの公式の高度な書籍の提言「C ++ GUI Qt4をプログラミングをお勧めします。」
- 生涯の恩恵を受け、「プログラマの嘘」を強くお勧めプログラマ自己規律と計画ブックシリーズ「プログラマの成長コース」、「悲しみのプログラマ」、!
- SDKのダウンロードリンク:https://pan.baidu.com/s/1A5Gd77kExm8Co5ckT51vvQ抽出コード:877p