Qtは、コントロールパネルのカスタムコントロール領域を書き込みます47-

I.はじめに

多くのWebページでは、多くの場合、デバイスは、パネル、またはもドラッグすることができ、すべてのパネルの情報の一部同等のタイプ、およびスマート訪問者管理プラットフォームで初めてのコントロールに対応して見ることができますこのような識別情報、訪問者情報パネル、パネルの情報のインタビューなどのパネルは、これは分類ショーに相当し、また、バーのテキストは、シーンのこのコントロールの使用は非常に多く、ならびに副であることが示されている対応するタイトルを提供あなたは点滅し、アラームインターフェイスを拡張し、タイトルを設定することができます。

第二に、機能の実現

  • 1:自動的に生成されたスクロールバー、すべてのウィジェットのサブクラスのオブジェクトをサポートしています
  • 2:サポート自動ストレッチオートフィル
  • 3:コンテナ内のすべてのオブジェクトへのポインタを取得するためのインタフェースを提供します
  • 4:自動伸縮幅高さかどうかを設定することができ
  • 5:間隔とマージンは、デバイスパネルとの間に設けられていてもよいです

第三に、レンダリング

第四に、ヘッダファイルのコード

#ifndef PANELWIDGET_H
#define PANELWIDGET_H

/**
 * 面板容器控件 作者:feiyangqingyun(QQ:517216493) 2016-11-20
 * 1:支持所有widget子类对象,自动产生滚动条
 * 2:支持自动拉伸自动填充
 * 3:提供接口获取容器内的所有对象的指针
 * 4:可设置是否自动拉伸宽度高度
 * 5:可设置设备面板之间的间距和边距
 */

#include <QWidget>

class QScrollArea;
class QFrame;
class QVBoxLayout;
class QGridLayout;

#ifdef quc
#if (QT_VERSION < QT_VERSION_CHECK(5,7,0))
#include <QtDesigner/QDesignerExportWidget>
#else
#include <QtUiPlugin/QDesignerExportWidget>
#endif

class QDESIGNER_WIDGET_EXPORT PanelWidget : public QWidget
#else
class PanelWidget : public QWidget
#endif

{
    Q_OBJECT
    Q_PROPERTY(int margin READ getMargin WRITE setMargin)
    Q_PROPERTY(int space READ getSpace WRITE setSpace)
    Q_PROPERTY(bool autoWidth READ getAutoWidth WRITE setAutoWidth)
    Q_PROPERTY(bool autoHeight READ getAutoHeight WRITE setAutoHeight)

public:
    explicit PanelWidget(QWidget *parent = 0);

protected:
    void resizeEvent(QResizeEvent *);

private:
    QScrollArea *scrollArea;            //滚动区域
    QWidget *scrollAreaWidgetContents;  //滚动区域载体
    QFrame *frame;                      //放置设备的框架,自动变宽变高
    QVBoxLayout *verticalLayout;        //设备面板总布局
    QGridLayout *gridLayout;            //设备表格布局

    int margin;                         //边距
    int space;                          //设备之间的间隔
    bool autoWidth;                     //宽度自动拉伸
    bool autoHeight;                    //高度自动拉伸

    QList<QWidget *> widgets;           //设备面板对象集合
    int columnCount;                    //面板列数

public:
    QSize sizeHint()                const;
    QSize minimumSizeHint()         const;

    int getMargin()                 const;
    int getSpace()                  const;
    bool getAutoWidth()             const;
    bool getAutoHeight()            const;

    QList<QWidget *> getWidgets();
    int getColumnCount();

public Q_SLOTS:
    void setWidget(QList<QWidget *> widgets, int columnCount);
    void setMargin(int left, int top, int right, int bottom);
    void setMargin(int margin);
    void setSpace(int space);
    void setAutoWidth(bool autoWidth);
    void setAutoHeight(bool autoHeight);

};

#endif // PANELWIDGET_H

第五に、コアコード

void PanelWidget::setWidget(QList<QWidget *> widgets, int columnCount)
{
    this->widgets = widgets;
    this->columnCount = columnCount;

    int row = 0;
    int column = 0;
    int index = 0;

    //先把之前的所有移除并不可见
    foreach (QWidget *widget, widgets) {
        gridLayout->removeWidget(widget);
        widget->setVisible(false);
    }

    //重新添加到布局中并可见
    foreach (QWidget *widget, widgets) {
        gridLayout->addWidget(widget, row, column);
        widget->setVisible(true);

        column++;
        index++;
        if (index % columnCount == 0) {
            row++;
            column = 0;
        }
    }

    row++;

    //设置右边弹簧
    if (!autoWidth) {
        QSpacerItem *hSpacer = new QSpacerItem(1, 1, QSizePolicy::Expanding, QSizePolicy::Minimum);
        gridLayout->addItem(hSpacer, 0, gridLayout->columnCount());
    }

    //设置底边弹簧
    if (!autoHeight) {
        QSpacerItem *vSpacer = new QSpacerItem(1, 1, QSizePolicy::Minimum, QSizePolicy::Expanding);
        gridLayout->addItem(vSpacer, row, 0);
    }
}

void PanelWidget::setMargin(int left, int top, int right, int bottom)
{
    gridLayout->setContentsMargins(left, top, right, bottom);
}

void PanelWidget::setMargin(int margin)
{
    if (this->margin != margin) {
        setMargin(margin, margin, margin, margin);
    }
}

void PanelWidget::setSpace(int space)
{
    if (this->space != space) {
        gridLayout->setSpacing(space);
    }
}

void PanelWidget::setAutoWidth(bool autoWidth)
{
    if (this->autoWidth != autoWidth) {
        this->autoWidth = autoWidth;
    }
}

void PanelWidget::setAutoHeight(bool autoHeight)
{
    if (this->autoHeight != autoHeight) {
        this->autoHeight = autoHeight;
    }
}

第六に、コントロールが説明します

  1. 150以上の絶妙な制御、ように太陰暦、セレクタをスライドさせ、ボタンを強調表示し、ダッシュボードのさまざま、プログレスバー、ボール、コンパス、グラフ、スケール、温度計、ナビゲーションバー、ナビゲーションバー、flatuiの進行を覆い。コントロールの統合の数よりもはるかに多くのQWT。
  2. 各クラスは、以下のプロジェクトのソースコード形式に統合個々の制御を容易にするために、ゼロが符号量を達成するために、各制御ファイルおよびヘッダファイルを結合する、別の対照として、独立して他のファイルとは無関係であることができます。QWT性の高い結合されたコントロールクラスを、連動、すべてのコードが含まれている必要があり、コントロールのいずれかを使用します。
  3. 、描画するために、任意のQtバージョンQt4.6 Qt5.12などmingwの、MSVC、GCCコンパイラのサポートをサポートするために、そのような窓+ Linuxの+マック+文字化けしません組み込みLinuxのような任意のオペレーティングシステムをサポートするすべての純粋なQtの、QWidgetの+ QPainterのを書きます直接のQt Creatorを、組み込みコントロールに統合されており、同じを使用することができ、効果のほとんどは、限り、いくつかのプロパティが設定されているように非常に便利です。
  4. 各制御に対応する制御を含有するDEMO別のソースは、便利な参照を有します。また、すべてのコントロールDEMOの統合された使用を提供します。
  5. 各コントロールのソースコードは、中国の注釈を詳細なカスタムコントロールを書くことを学ぶのは簡単、統一された設計仕様に基づいて作成されています。
  6. 各コントロールのデフォルトの色とデモに対応する色がとても美しいです。
  7. 130以上の可視制御六の不可視コントロール。
  8. 一部のコントロールは、スタイルのスタイルの選択、複数の選択肢のスタイルインジケータを数多く提供しています。
  9. すべてのコントロールは、適応伸ばしフォームを変更します。
  10. ドラッグデザインをサポートする統合デザインカスタム属性、WYSIWYGは、XML形式でインポートおよびエクスポートをサポートしています。
  11. デモに付属しているActiveXコントロールは、すべてのコントロールは、ブラウザのIEで直接実行することができます。
  12. Fontawesome統合グラフィックスフォント+グラフィックフォントの何百ものAlibabaのiconfontコレクション、フォント楽しいグラフィックがもたらします。
  13. 最終的にはすべてのコントロールとDLLの動的ライブラリファイルを生成するには、ドラッグでの使用のために設計されqtcreatorに直接統合することができます。
  14. 次に、ユーザは、大きな需要がある場合は、既にQMLバージョンでは、後者は、PyQtはバージョンを検討します。

七、SDKのダウンロード

  • SDKのダウンロードリンク:https://pan.baidu.com/s/1A5Gd77kExm8Co5ckT51vvQ抽出コード:877p
  • リンクは、動的ライブラリファイルのさまざまなバージョン、すべてのコントロールのヘッダファイル、デモの使用、カスタムコントロール+プロパティのデザイナーに含まれてダウンロードしてください。
  • オープンプラグインのカスタム動的ライブラリのdllを使用(永久無料)、及び任意の制限なし、バックドア、使いやすさ。
  • qt5.12.3 msvc2017 32 + 64 mingwの32 + 64内を含む26現在利用可能バージョンのDLL、。
  • コントロールを向上させ、コントロールを改善するために、随時、定期的に更新SDK、すべての提案を歓迎するために、ありがとうございました!
  • ウィジェットバージョン(QQ:517216493)QMLバージョン(QQ:373955953)sambongラクダ(QQ:278969898)。
  • Qtの高度な列はほとんどTaogeの道を知っているhttps://zhuanlan.zhihu.com/TaoQt
  • スキルを書くようこそ懸念公共マイクロチャネル番号] [効率的なプログラマー、コンテンツC ++ / Pythonの、学習、人気の高い技術、キャリア開発、乾燥品の多くは、多くの利益をもたらします!
  • Qtの入門本は、「Qtの創造主クイックスタート」「Qt5プログラミングエントリのフオYafei」、Qtの公式の高度な書籍の提言「C ++ GUI Qt4をプログラミングをお勧めします。」
  • 生涯の恩恵を受け、「プログラマの嘘」を強くお勧めプログラマ自己規律と計画ブックシリーズ「プログラマの成長コース」、「悲しみのプログラマ」、!

おすすめ

転載: www.cnblogs.com/feiyangqingyun/p/11330770.html