I.はじめに
この制御は、良い朝を書き込むために使用される、いくつかの人々は、このようなムーランルージュぽっちゃりとして、コードの上にこのコントロールを開くことを許可されている、このコントロールは、もっと点滅星のように、真のニーズからではなく、単なる気まぐれエッジが弱いタイマーが動的に発光エッジの明るさ、呼吸の効果を変更取得、痛みはちょっと、元恋人のことを思い出す、この曲を見て、別の名前を呼吸します!長すぎるために!
原理は実質的にテーパー勾配QRadialGradientを使用し、その後タイマー値が透明度のグラデーションブラシの色を変更し、呼吸器への影響を引き起こすことがあります。Qtはグラデーションブラシの良い品種を提供し、非常に便利な、あなたはブラシエリアを実行することができ、その後、比例補間、補間が指定した色に対応するので、非常に豊かなを使用しています。
第二に、機能の実現
- 1:呼吸間隔を設定することができます
- 2:透明色は、ステップ勾配を設けてもよいです
- 3:背景色を設定
第三に、レンダリング
第四に、ヘッダファイルのコード
#ifndef LIGHTPOINT_H
#define LIGHTPOINT_H
/**
* 呼吸点控件 作者:feiyangqingyun(QQ:517216493) 2017-11-27
* 1:可设置呼吸间隔
* 2:可设置颜色透明渐变步长
* 3:可设置背景颜色
*/
#include <QWidget>
#ifdef quc
#if (QT_VERSION < QT_VERSION_CHECK(5,7,0))
#include <QtDesigner/QDesignerExportWidget>
#else
#include <QtUiPlugin/QDesignerExportWidget>
#endif
class QDESIGNER_WIDGET_EXPORT LightPoint : public QWidget
#else
class LightPoint : public QWidget
#endif
{
Q_OBJECT
Q_PROPERTY(int step READ getStep WRITE setStep)
Q_PROPERTY(int interval READ getInterval WRITE setInterval)
Q_PROPERTY(QColor bgColor READ getBgColor WRITE setBgColor)
public:
explicit LightPoint(QWidget *parent = 0);
~LightPoint();
protected:
void paintEvent(QPaintEvent *);
void drawBg(QPainter *painter);
private:
int step; //颜色透明渐变步长
int interval; //定时器间隔
QColor bgColor; //背景颜色
QTimer *timer; //绘制定时器
int offset; //偏移量
bool add; //是否增加
public:
int getStep() const;
int getInterval() const;
QColor getBgColor() const;
QSize sizeHint() const;
QSize minimumSizeHint() const;
public slots:
//设置颜色透明渐变步长
void setStep(int step);
//设置定时器间隔
void setInterval(int interval);
//设置背景颜色
void setBgColor(const QColor &bgColor);
};
#endif // LIGHTPOINT_H
第五に、コアコード
#pragma execution_character_set("utf-8")
#include "lightpoint.h"
#include "qpainter.h"
#include "qevent.h"
#include "qtimer.h"
#include "qdebug.h"
LightPoint::LightPoint(QWidget *parent) : QWidget(parent)
{
step = 10;
interval = 100;
bgColor = QColor(255, 0, 0);
timer = new QTimer(this);
connect(timer, SIGNAL(timeout()), this, SLOT(update()));
timer->start(100);
offset = 0;
add = true;
}
LightPoint::~LightPoint()
{
if (timer->isActive()) {
timer->stop();
}
}
void LightPoint::paintEvent(QPaintEvent *)
{
int width = this->width();
int height = this->height();
int side = qMin(width, height);
//绘制准备工作,启用反锯齿,平移坐标轴中心,等比例缩放
QPainter painter(this);
painter.setRenderHints(QPainter::Antialiasing | QPainter::TextAntialiasing);
painter.translate(width / 2, height / 2);
painter.scale(side / 200.0, side / 200.0);
//绘制背景
drawBg(&painter);
}
void LightPoint::drawBg(QPainter *painter)
{
int radius = 99;
painter->save();
QRadialGradient g(QPoint(0, 0), radius);
(offset < 70 && add) ? (offset += step) : (add = false);
(offset > 0 && !add) ? (offset -= step) : (add = true);
bgColor.setAlpha(255);
g.setColorAt(0.1, bgColor);
bgColor.setAlpha(100 + offset);
g.setColorAt(0.3, bgColor);
bgColor.setAlpha(50 + offset);
g.setColorAt(0.6, bgColor);
bgColor.setAlpha(0);
g.setColorAt(1.0, bgColor);
painter->setPen(Qt::NoPen);
painter->setBrush(g);
painter->drawEllipse(-radius, -radius, radius * 2, radius * 2);
painter->restore();
}
int LightPoint::getStep() const
{
return this->step;
}
int LightPoint::getInterval() const
{
return this->interval;
}
QColor LightPoint::getBgColor() const
{
return this->bgColor;
}
QSize LightPoint::sizeHint() const
{
return QSize(100, 100);
}
QSize LightPoint::minimumSizeHint() const
{
return QSize(5, 5);
}
void LightPoint::setStep(int step)
{
if (this->step != step) {
this->step = step;
update();
}
}
void LightPoint::setInterval(int interval)
{
if (this->interval != interval) {
this->interval = interval;
timer->setInterval(interval);
update();
}
}
void LightPoint::setBgColor(const QColor &bgColor)
{
if (this->bgColor != bgColor) {
this->bgColor = bgColor;
update();
}
}
第六に、コントロールが説明します
- 以上149絶妙な制御、ように太陰暦、セレクタをスライドさせ、ボタンを強調表示し、ダッシュボードのさまざま、プログレスバー、ボール、コンパス、グラフ、スケール、温度計、ナビゲーションバー、ナビゲーションバー、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はバージョンを検討します。
七、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の、学習、人気の高い技術、キャリア開発、乾燥品の多くは、多くの利益をもたらします!