admin 管理员组

文章数量: 1086019


2024年1月19日发(作者:translate now)

QScrollTime::QScrollTime(QWidget *parent, Qt::WindowFlags enumFlags) : QFrame(parent, enumFlags){ ui = new Ui::QScrollTime(); ui->setupUi(this); ui->listViewHour->setModel(new QHourModel(this)); ui->listViewHour->setItemDelegate(new QScrollTimeDelegate(this)); ui->listViewHour->viewport()->installEventFilter(this); ui->listViewHour->setVerticalScrollMode(QAbstractItemView::ScrollPerPixel); ui->listViewMinute->setModel(new QMinuteModel(this)); ui->listViewMinute->setItemDelegate(new QScrollTimeDelegate(this)); ui->listViewMinute->viewport()->installEventFilter(this); ui->listViewMinute->setVerticalScrollMode(QAbstractItemView::ScrollPerPixel); ui->listViewSecond->setModel(new QSecondModel(this)); ui->listViewSecond->setItemDelegate(new QScrollTimeDelegate(this)); ui->listViewSecond->viewport()->installEventFilter(this); ui->listViewSecond->setVerticalScrollMode(QAbstractItemView::ScrollPerPixel); ui->frameScroll->setFixedHeight(ITEM_HEIGHT * 5.5); setStyleSheet(" #frameScroll,#listViewHour,#listViewMinute,#listViewSecond {background:transparent;} #frame {border-top:1px solid #D1D1D1;} #pBScrollCancel{border:none;} #pBScrollConfirm {border:none;color:#58BBE4;} #pBScrollConfirm:hover {color:#79C8E9;} #pBScrollConfirm:pressed {color:#4695B6;}"); connect(ui->listViewHour, &QListView::clicked, this, &QScrollTime::slotTimeClicked); connect(ui->listViewMinute, &QListView::clicked, this, &QScrollTime::slotTimeClicked); connect(ui->listViewSecond, &QListView::clicked, this, &QScrollTime::slotTimeClicked); //垂直滚动条Value变化---当前时间被调整 connect(ui->listViewHour->verticalScrollBar(), &QScrollBar::valueChanged, this, &QScrollTime::slotTimeChangedByScorll); connect(ui->listViewMinute->verticalScrollBar(), &QScrollBar::valueChanged, this, &QScrollTime::slotTimeChangedByScorll); connect(ui->listViewSecond->verticalScrollBar(), &QScrollBar::valueChanged, this, &QScrollTime::slotTimeChangedByScorll); connect(ui->pBScrollCancel, &QPushButton::clicked, this, [&](){ emit this->singalCancelClicked(m_origTime); this->hide(); }); connect(ui->pBScrollConfirm, &QPushButton::clicked, this, [&](){ if (!m_d()) { emit this->timeChanged(m_showTime); } this->hide(); }); setContentsMargins(LEFT_SHAWDE,TOP_SHAWDE,RIGHT_SHAWDE,BOTTOM_SHAWDE); m_layerRect = QRect(contentsRect().left(), ITEM_HEIGHT * 2.5 + contentsRect().top(), contentsRect().width(), ITEM_HEIGHT); setAttribute(Qt::WA_TranslucentBackground, true);} 初始化时间

(contentsRect().left(), contentsRect().top(), contentsRect().left(), contentsRect().top()); if (indexRect != m_ected(indexRect)) { setCenterCoveredRow(ui->listViewSecond, ()); return; } QString value = (Qt::DisplayRole).toString(); if (!y()) { int secs = (); if (secs != m_()) { bTimeChanged = true; m_(m_(), m_(), secs); } } } } if (bTimeChanged) { emit timeChanged(m_showTime); }} 设置时分秒时,将滚动条值设置void QScrollTime::slotDelaySetTime(){ setCenterCoveredRow(ui->listViewHour, m_() + TOP_SPACEITEM_NUM); setCenterCoveredRow(ui->listViewMinute, m_() + TOP_SPACEITEM_NUM); setCenterCoveredRow(ui->listViewSecond, m_() + TOP_SPACEITEM_NUM);}void QScrollTime::setCenterCoveredRow(QListView* view, int row){ if (view == ui->listViewHour) { ui->listViewHour->verticalScrollBar()->setValue((row - TOP_SPACEITEM_NUM) * ITEM_HEIGHT); } else if (view == ui->listViewMinute) { ui->listViewMinute->verticalScrollBar()->setValue((row - TOP_SPACEITEM_NUM) * ITEM_HEIGHT); } else if (view == ui->listViewSecond) { ui->listViewSecond->verticalScrollBar()->setValue((row - TOP_SPACEITEM_NUM) * ITEM_HEIGHT); }} 时分秒的Model

enum TimePartValue{ HoursOfDay = 24, MinutesOfHour = 60, SecondsOfMin = 60,};class QTimeModel : public QAbstractListModel{ Q_OBJECTprotected: QTimeModel(TimePartValue v, QObject *parent) : QAbstractListModel(parent), value(v){} ~QTimeModel() {}public: int rowCount(const QModelIndex &parent = QModelIndex()) const; QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const; Qt::ItemFlags flags(const QModelIndex &index) const;private: int value;};class QHourModel : public QTimeModel{ Q_OBJECTpublic: QHourModel(QObject *parent) : QTimeModel(HoursOfDay, parent){} ~QHourModel(){}};class QMinuteModel : public QTimeModel{ Q_OBJECTpublic: QMinuteModel(QObject *parent) : QTimeModel(MinutesOfHour, parent){} ~QMinuteModel(){}};class QSecondModel : public QTimeModel{ Q_OBJECTpublic: QSecondModel(QObject *parent) : QTimeModel(SecondsOfMin, parent){} ~QSecondModel(){}};.cpp,注意上下有两个空Item,为了给滚动条留空间


本文标签: 垂直 调整 设置 变化 时间