Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 一区二区日韩,国产三级在线精品男人的天堂,亚洲视频网站在线观看

          整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          解決layui多個日期選擇控件一閃而過的問題

          決layui多個日期選擇控件一閃而過的問題

          一、HTML

          <div class="layui-input-inline" style="width: 200px;">
          <input type="text" name="startDate" id="startDate" placeholder="起始日期" autocomplete="off" class="layui-input date">
          </div>
          <div class="layui-form-mid">-</div>
          <div class="layui-input-inline" style="width: 200px;">
          <input type="text" name="endDate"  id="endDate" placeholder="終止日期" autocomplete="off" class="layui-input date">
          </div>

          二、JS

          、前言

          垂直時間軸控件,主要用來描述企業發展歷程大事件,或者軟件版本迭代歷史等,通過時間節點和事件描述來直觀的展示發展的過程,一般在web網頁或者app中經常看到此類控件,尤其是公司的官網關于公司部分,著重在一些獨角獸公司或者正處于蓬勃發展的公司,用來展示自己多牛逼,發展多么迅猛等。


          垂直時間軸控件主要存儲的數據包含兩個,一個是時間節點,一個是事件描述,為了后期的拓展性,采用結構體來存放這個數據,比如后期還可能增加該事件是否屬于重大事件標記,是的話則繪制的時候突出顯示比如加大字號加粗,本控件的主要難點在于自動計算和排列來繪制時間和事件描述,默認采用對等分的機制來處理繪制,還有部分時間軸控件是左側時間右側事件描述,這個可以在源碼基礎上自行更改或者增加樣式,為了能夠展示所有的事件,本控件主體是繼承自滾動條區域控件,超過高度自動產生滾動條。

          二、實現的功能

          • 1:可設置節點邊距
          • 2:可設置節點高度
          • 3:可設置信息邊框邊距
          • 4:可設置信息所占高度
          • 5:可設置基準顏色/線條顏色
          • 6:可設置標題/信息集合
          • 7:自動產生滾動條
          • 8:支持字符串形式設置數據

          三、效果圖

          四、頭文件代碼

          #ifndef TIMEAXIS_H
          #define TIMEAXIS_H
          
          /**
           * 垂直時間軸控件 作者:雨田哥(QQ:3246214072) 整理:feiyangqingyun(QQ:517216493) 2019-10-07
           * 1:可設置節點邊距
           * 2:可設置節點高度
           * 3:可設置信息邊框邊距
           * 4:可設置信息所占高度
           * 5:可設置基準顏色/線條顏色
           * 6:可設置標題/信息集合
           * 7:自動產生滾動條
           * 8:支持字符串形式設置數據
           */
          
          #include <QScrollArea>
          class TimeAxisWidget;
          
          #ifdef quc
          #if (QT_VERSION < QT_VERSION_CHECK(5,7,0))
          #include <QtDesigner/QDesignerExportWidget>
          #else
          #include <QtUiPlugin/QDesignerExportWidget>
          #endif
          
          class QDESIGNER_WIDGET_EXPORT TimeAxis : public QScrollArea
          #else
          class TimeAxis : public QScrollArea
          #endif
          
          {
              Q_OBJECT
              Q_PROPERTY(int itemMargin READ getItemMargin WRITE setItemMargin)
              Q_PROPERTY(int itemHeight READ getItemHeight WRITE setItemHeight)
              Q_PROPERTY(int infoPadding READ getInfoPadding WRITE setInfoPadding)
              Q_PROPERTY(int infoHeight READ getInfoHeight WRITE setInfoHeight)
          
              Q_PROPERTY(QColor baseColor READ getBaseColor WRITE setBaseColor)
              Q_PROPERTY(QColor lineColor READ getLineColor WRITE setLineColor)
          
              Q_PROPERTY(QString title READ getTitle WRITE setTitle)
              Q_PROPERTY(QString infos READ getInfos WRITE setInfos)
          
          public:
              explicit TimeAxis(QWidget *parent = 0);
          
          private:
              int itemMargin;         //節點邊距
              int itemHeight;         //節點高度
              int infoPadding;        //信息邊距
              int infoHeight;         //信息高度
          
              QColor baseColor;       //基準顏色
              QColor lineColor;       //線條顏色
          
              QString title;          //標題
              QString infos;          //信息集合
          
              //時間軸主控件
              TimeAxisWidget *timeAxisWidget;
          
          public:
              int getItemMargin()     const;
              int getItemHeight()     const;
              int getInfoPadding()    const;
              int getInfoHeight()     const;
          
              QColor getBaseColor()   const;
              QColor getLineColor()   const;
          
              QString getTitle()      const;
              QString getInfos()      const;
          
              QSize sizeHint()        const;
              QSize minimumSizeHint() const;
          
              TimeAxisWidget *getWidget();
          
          public Q_SLOTS:
              //設置節點邊距+節點高度
              void setItemMargin(int itemMargin);
              void setItemHeight(int itemHeight);
          
              //設置信息邊距+信息高度
              void setInfoPadding(int infoPadding);
              void setInfoHeight(int infoHeight);
          
              //設置基準顏色+線條顏色
              void setBaseColor(const QColor &baseColor);
              void setLineColor(const QColor &lineColor);
          
              //設置標題+信息集合
              void setTitle(const QString &title);
              void setInfos(const QString &infos);
          };
          
          class TimeAxisWidget : public QWidget
          {
              Q_OBJECT
          
          public:
              //可以自行拓展其他信息
              struct TimeAxisInfo {
                  QString time;   //時間
                  QString info;   //信息
              };
          
              explicit TimeAxisWidget(QWidget *parent = 0);
          
          protected:
              void paintEvent(QPaintEvent *);
              void drawTitle(QPainter *painter);
              void drawLine(QPainter *painter);
              void drawInfo(QPainter *painter);
              void drawInfoRight(QPainter *painter, const QRectF &infoRect, int infoHeight);
              void drawInfoLeft(QPainter *painter, const QRectF &infoRect, int infoHeight);
          
          private:
              int itemMargin;         //節點邊距
              int itemHeight;         //節點高度
              int infoPadding;        //信息邊距
              int infoHeight;         //信息高度
          
              QColor baseColor;       //基準顏色
              QColor lineColor;       //線條顏色
          
              QString title;          //標題
              QString infos;          //信息集合
          
              //信息集合結構體
              QList<TimeAxisInfo> itemInfos;
          
          public:
              int getItemMargin()     const;
              int getItemHeight()     const;
              int getInfoPadding()    const;
              int getInfoHeight()     const;
          
              QColor getBaseColor()   const;
              QColor getLineColor()   const;
          
              QString getTitle()      const;
              QString getInfos()      const;
          
              QSize sizeHint()        const;
              QSize minimumSizeHint() const;
          
          public Q_SLOTS:
              //設置節點邊距+節點高度
              void setItemMargin(int itemMargin);
              void setItemHeight(int itemHeight);
          
              //設置信息邊距+信息高度
              void setInfoPadding(int infoPadding);
              void setInfoHeight(int infoHeight);
          
              //設置基準顏色+線條顏色
              void setBaseColor(const QColor &baseColor);
              void setLineColor(const QColor &lineColor);
          
              //設置標題+信息集合
              void setTitle(const QString &title);
              void setInfos(const QString &infos);
          
              //設置信息集合,結構體方式
              void setItemInfos(const QList<TimeAxisInfo> &itemInfos);
          };
          
          #endif // TIMEAXIS_H
          
          
          

          【領QT開發教程學習資料,點擊下方鏈接莬費領取↓↓,先碼住不迷路~】

          點擊這里:Qt資料領取(視頻教程+文檔+代碼+項目實戰)

          五、核心代碼

          void TimeAxisWidget::drawTitle(QPainter *painter)
          {
              painter->save();
          
              QFont font;
              font.setBold(true);
              font.setPointSize(16);
              painter->setFont(font);
          
              painter->setPen(baseColor);
              painter->drawText(itemMargin, itemMargin, width() - 2 * itemMargin, 40, Qt::AlignCenter, title);
          
              painter->restore();
          }
          
          void TimeAxisWidget::drawLine(QPainter *painter)
          {
              painter->save();
              painter->setPen(QPen(lineColor, 6));
              int startY = itemMargin + 50;
              int endY = startY + itemInfos.size() * itemHeight;
              painter->drawLine(width() / 2.0, startY, width() / 2.0, endY);
              painter->restore();
          
              //設置下固定高度
              this->setFixedHeight(endY + itemMargin);
          }
          
          void TimeAxisWidget::drawInfo(QPainter *painter)
          {
              painter->save();
              painter->setPen(Qt::NoPen);
          
              QFont font;
              font.setPointSize(12);
              painter->setFont(font);
          
              int startY = itemMargin + 50;
              int centerX = this->width() / 2.0;
              int spacer = itemMargin + 10;
          
              //追個繪制時間軸信息集合,偶數行左側繪制時間右側繪制信息
              for (int i = 0; i < itemInfos.size(); i++) {
                  painter->setBrush(Qt::white);
                  painter->setPen(QPen(baseColor, 2));
          
                  if (i % 2 == 0) {
                      //繪制時間
                      QRectF textRect(0, startY, centerX - spacer, itemHeight);
                      painter->drawText(textRect, Qt::AlignRight | Qt::AlignVCenter, itemInfos.at(i).time);
                      //繪制信息邊框
                      QRectF infoRect(centerX + spacer, textRect.center().y() - infoHeight / 2.0, centerX - spacer - itemMargin - infoHeight / 2.0, infoHeight);
                      drawInfoRight(painter, infoRect, infoHeight);
                      //繪制信息背景
                      painter->setBrush(baseColor);
                      drawInfoRight(painter, infoRect.adjusted(infoPadding, infoPadding, 0, -infoPadding), infoHeight - infoPadding * 2);
                      //繪制信息文字
                      painter->setPen(Qt::white);
                      painter->drawText(infoRect.adjusted(infoPadding, infoPadding, 0, -infoPadding), Qt::AlignCenter, itemInfos.at(i).info);
                  } else {
                      //繪制時間
                      QRectF textRect(centerX + spacer, startY, centerX - spacer, itemHeight);
                      painter->drawText(centerX + spacer, startY, centerX - spacer, itemHeight, Qt::AlignLeft | Qt::AlignVCenter, itemInfos.at(i).time);
                      //繪制信息邊框
                      QRectF infoRect(itemMargin + infoHeight / 2.0, textRect.center().y() - infoHeight / 2.0, centerX - spacer - itemMargin - infoHeight / 2.0, infoHeight);
                      drawInfoLeft(painter, infoRect, infoHeight);
                      //繪制信息背景
                      painter->setBrush(baseColor);
                      drawInfoLeft(painter, infoRect.adjusted(0, infoPadding, -infoPadding, -infoPadding), infoHeight - infoPadding * 2);
                      //繪制信息文字
                      painter->setPen(Qt::white);
                      painter->drawText(infoRect.adjusted(0, infoPadding, -infoPadding, -infoPadding), Qt::AlignCenter, itemInfos.at(i).info);
                  }
          
                  //繪制垂直線對應的圓
                  painter->setPen(Qt::NoPen);
                  painter->setBrush(baseColor);
                  painter->drawEllipse(centerX - 8, startY + itemHeight / 2.0 - 8, 16, 16);
                  painter->setBrush(Qt::white);
                  painter->drawEllipse(centerX - 4, startY + itemHeight / 2.0 - 4, 8, 8);
          
                  //Y軸往下移一個高度
                  startY += itemHeight;
              }
          
              painter->restore();
          }
          
          

          六、控件介紹

          1. 超過160個精美控件,涵蓋了各種儀表盤、進度條、進度球、指南針、曲線圖、標尺、溫度計、導航條、導航欄,flatui、高亮按鈕、滑動選擇器、農歷等。遠超qwt集成的控件數量。
          2. 每個類都可以獨立成一個單獨的控件,零耦合,每個控件一個頭文件和一個實現文件,不依賴其他文件,方便單個控件以源碼形式集成到項目中,較少代碼量。qwt的控件類環環相扣,高度耦合,想要使用其中一個控件,必須包含所有的代碼。
          3. 全部純Qt編寫,QWidget+QPainter繪制,支持Qt4.6到Qt5.13的任何Qt版本,支持mingw、msvc、gcc等編譯器,支持任意操作系統比如windows+linux+mac+嵌入式linux等,不亂碼,可直接集成到Qt Creator中,和自帶的控件一樣使用,大部分效果只要設置幾個屬性即可,極為方便。
          4. 每個控件都有一個對應的單獨的包含該控件源碼的DEMO,方便參考使用。同時還提供一個所有控件使用的集成的DEMO。
          5. 每個控件的源代碼都有詳細中文注釋,都按照統一設計規范編寫,方便學習自定義控件的編寫。
          6. 每個控件默認配色和demo對應的配色都非常精美。
          7. 超過130個可見控件,6個不可見控件。
          8. 部分控件提供多種樣式風格選擇,多種指示器樣式選擇。
          9. 所有控件自適應窗體拉伸變化。
          10. 集成自定義控件屬性設計器,支持拖曳設計,所見即所得,支持導入導出xml格式。
          11. 自帶activex控件demo,所有控件可以直接運行在ie瀏覽器中。
          12. 集成fontawesome圖形字體+阿里巴巴iconfont收藏的幾百個圖形字體,享受圖形字體帶來的樂趣。
          13. 所有控件最后生成一個動態庫文件(dll或者so等),可以直接集成到qtcreator中拖曳設計使用。
          14. 目前已經有qml版本,后期會考慮出pyqt版本,如果用戶需求量很大的話。
          15. 自定義控件插件開放動態庫使用(永久免費),無任何后門和限制,請放心使用。
          16. 目前已提供32個版本的dll,其中qt_5_7_0_mingw530_32這個版本會一直保證最新的完整的。
          17. 不定期增加控件和完善控件,不定期更新SDK,歡迎各位提出建議,謝謝!
          18. Qt入門書籍推薦霍亞飛的《Qt Creator快速入門》《Qt5編程入門》,Qt進階書籍推薦官方的《C++ GUI Qt4編程》。
          19. 強烈推薦程序員自我修養和規劃系列書《大話程序員》《程序員的成長課》《解憂程序員》,受益匪淺,受益終生!
          20. SDK地址:https://gitee.com/feiyangqingyun/QUCSDK https://github.com/feiyangqingyun/qucsdk

          原文鏈接:https://www.cnblogs.com/feiyangqingyun/p/11639987.html

          【領QT開發教程學習資料,點擊下方鏈接莬費領取↓↓,先碼住不迷路~】

          點擊這里:「鏈接」

          頁編程之數字選擇器。

          同學們好!這里是免費少兒編程知識分享,每天一行代碼誰都能學會!今天分享的知識是數字選擇器,用到的是input標簽,type屬性值為range。這個控件常被用來快速輸入不太精準的數字,比如說調節明暗色值高寬等數據,以一個可以拖動的滾動條形態出現。

          先來看看今天實例的運行效果,網頁上為了方便展示,我仍將其分為了上下兩段,上面的是一個數學加法公式,默認是0+0=0。

          下面是兩個Range控件,中間一個加號,先拖動第一個range,發現加數值發生了變化,拖動第二個時被加數值發生了變化。而且不論是拖動哪一個range,控件最終都會自動得算出等式的值。這就是range控件的一個簡單使用場景,效果各位同學都已經看到了。

          《ipt t現在我們來看看實現的代碼吧。igut range控件仍然是由input,《ip標簽的type屬性來編寫而成的。它常用的屬性有Max控件能接受的最大數值范圍。<ipt tnpe Min控件能接受的最小數值范圍。tep每次拖動時值自動增加或者減少多少。

          《ipuvalue設置控件在頁面加載之初的默認值。onMouserMove事件當鼠標在控件移動時觸發。《ip這些屬性其實早就已經給你們講過了,相信各位同學自己也能看明白。aipt控件就講完了。

          《p各位同學你們有沒有發現司與定出稱力be?ipt 當基礎知識累積到一定程度的時候,《input p編程也就沒有那么難了。《iput 就算是陌生的東西只要出現過,《inut pa你猜也能猜個八九不離十。

          《ipt 還有時間來講解一下示例里的JS吧。onMousemove事件加上了自定義函數CSUM。《iptp" 只要鼠標在控件上移動,《ip就調用這個函數來完成計算等式的值。事件中的函數名和JS中的函數名必須完全一致。《ip在CSUM中我先定義了三個變量ABC,AB分別用來保存兩個 reng 的值。這里的A1、A2、A3就是上一章節才講過的label標簽,也是使用id來引用的。將AB的值分別顯示在label中。

          ·這一句是計算a加b的值,《ipt tne在A3這個label中顯示出來,i這里還用到了JS的內置函數syslnt,可以將字符串轉化為數字,涉及到變量類型就先不講了。

          ·總之最后的結果就是示例的樣子,《ipet t》在這里還有一段注釋代碼,以后學習了JS之后再回過頭來看就會非常有意思。ipt tpr'就會非常有意思,這個控件的寫法和使用都很簡單。

          今天的分享就到這里,希望各位同學下去照著寫三遍,做到不看視頻也能夠寫出來,所有的案例及相關文檔均可以向我獲取,下期見。網頁編程服務端編程數據庫算法,點贊關注。


          主站蜘蛛池模板: 91video国产一区| 国产肥熟女视频一区二区三区| 精品国产一区二区三区久久狼| 农村人乱弄一区二区| 国产精品日韩一区二区三区 | 国产日韩精品一区二区三区| 国产精品免费一区二区三区四区| 一区二区三区内射美女毛片| 精品无码国产一区二区三区51安| 夜色福利一区二区三区| 国产无码一区二区在线| 亚洲国产综合无码一区二区二三区| 亚洲熟女综合色一区二区三区| 人妻无码第一区二区三区 | 91视频国产一区| 精品一区二区三区中文字幕| 大屁股熟女一区二区三区| 日亚毛片免费乱码不卡一区| 国产在线精品一区二区在线看| 国产一区二区三区在线| 国产精品一区二区三区久久| 国产一区二区三区电影| 日韩福利视频一区| 精品福利一区3d动漫| 波多野结衣在线观看一区二区三区 | 影音先锋中文无码一区| 无码人妻精品一区二区三区99性| 日日摸夜夜添一区| 精品国产一区二区三区AV| 成人毛片一区二区| 精品无码成人片一区二区| 久久国产三级无码一区二区| 亚洲永久无码3D动漫一区| 高清国产AV一区二区三区| 日韩爆乳一区二区无码| 无码视频一区二区三区| 亚洲国产精品一区二区第四页 | 另类国产精品一区二区| 国产精品一区二区香蕉| 日韩有码一区二区| 无码少妇精品一区二区免费动态|