Rename SlideableTableView to SlideTableView, and refactor.
This commit is contained in:
@@ -11,7 +11,7 @@
|
||||
#include <QHeaderView>
|
||||
#include <QLabel>
|
||||
#include <QTableView>
|
||||
#include "components/SlideableTableView.h"
|
||||
#include "components/SlideTableView.h"
|
||||
#include <QPushButton>
|
||||
#include "src/dialogs/SelectDialog.h"
|
||||
#include "src/windows/mainwindow.h"
|
||||
@@ -34,7 +34,7 @@ UserOperationLogForm::UserOperationLogForm(QWidget* parent) {
|
||||
btn = new QPushButton(header);
|
||||
headerLayout->addWidget(btn, 0, Qt::AlignLeft);
|
||||
headerLayout->addSpacerItem(new QSpacerItem(20, 20, QSizePolicy::Expanding));
|
||||
table = new SlideableTableView(this);
|
||||
table = new SlideTableView(this);
|
||||
layout->addWidget(header);
|
||||
layout->addWidget(table);
|
||||
model = new LogFileTableModel(this);
|
||||
@@ -90,7 +90,7 @@ void UserOperationLogForm::loadUserOperationLog(const QString& fileName, const Q
|
||||
model->setHeader(header);
|
||||
// UserOperationLog::getHistoryLogFiles();
|
||||
delete table;
|
||||
table = new SlideableTableView(this);
|
||||
table = new SlideTableView(this);
|
||||
layout->addWidget(table);
|
||||
table->setModel(model);
|
||||
|
||||
|
||||
59
src/components/SlideTableView.cpp
Normal file
59
src/components/SlideTableView.cpp
Normal file
@@ -0,0 +1,59 @@
|
||||
//
|
||||
// Created by Krad on 2021/11/23.
|
||||
//
|
||||
|
||||
#include "SlideTableView.h"
|
||||
|
||||
#include <cmath>
|
||||
#include <QScrollBar>
|
||||
#include <QMouseEvent>
|
||||
#include <QApplication>
|
||||
|
||||
namespace {
|
||||
const double ROW_HEIGHT = 30.0l;
|
||||
}
|
||||
SlideTableView::SlideTableView(QWidget *parent)
|
||||
: QTableView(parent)
|
||||
, mIsDragging(false)
|
||||
, mOriginPosY(-1)
|
||||
, mOriginScrollBarV(0)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
SlideTableView::~SlideTableView() {
|
||||
|
||||
}
|
||||
|
||||
void SlideTableView::mousePressEvent(QMouseEvent *ev) {
|
||||
mIsDragging = true;
|
||||
mOriginPosY = ev->pos().y();
|
||||
mOriginScrollBarV = this->verticalScrollBar()->value();
|
||||
QTableView::mousePressEvent(ev);
|
||||
}
|
||||
|
||||
void SlideTableView::mouseMoveEvent(QMouseEvent *ev) {
|
||||
if (!mIsDragging) {
|
||||
QTableView::mouseMoveEvent(ev);
|
||||
return;
|
||||
}
|
||||
if (this->verticalScrollBar()->isVisible()) {
|
||||
int nv = (int) round(((double) mOriginScrollBarV * ROW_HEIGHT + ((double) (mOriginPosY - ev->pos().y())))
|
||||
/ ROW_HEIGHT);
|
||||
int max = this->verticalScrollBar()->maximum();
|
||||
int min = this->verticalScrollBar()->minimum();
|
||||
nv = nv > max ? max : (nv < min ? min : nv);
|
||||
this->verticalScrollBar()->setValue(nv);
|
||||
}
|
||||
QTableView::mouseMoveEvent(ev);
|
||||
}
|
||||
|
||||
void SlideTableView::mouseReleaseEvent(QMouseEvent *ev) {
|
||||
if (!mIsDragging)mIsDragging = false;
|
||||
QTableView::mouseReleaseEvent(ev);
|
||||
}
|
||||
|
||||
void SlideTableView::currentChanged(const QModelIndex ¤t, const QModelIndex &previous) {
|
||||
QTableView::currentChanged(current, previous);
|
||||
emit currentRowChanged(current.row());
|
||||
}
|
||||
@@ -2,15 +2,15 @@
|
||||
// Created by Krad on 2021/11/23.
|
||||
//
|
||||
|
||||
#ifndef GUI_SLIDEABLETABLEVIEW_H
|
||||
#define GUI_SLIDEABLETABLEVIEW_H
|
||||
#ifndef GUI_SLIDETABLEVIEW_H
|
||||
#define GUI_SLIDETABLEVIEW_H
|
||||
|
||||
#include <QTableView>
|
||||
class SlideableTableView:public QTableView {
|
||||
class SlideTableView: public QTableView {
|
||||
Q_OBJECT
|
||||
public:
|
||||
explicit SlideableTableView(QWidget *parent = nullptr);
|
||||
~SlideableTableView();
|
||||
explicit SlideTableView(QWidget *parent = nullptr);
|
||||
~SlideTableView() override;
|
||||
|
||||
Q_SIGNALS:
|
||||
void currentRowChanged(int row);
|
||||
@@ -18,14 +18,13 @@ protected:
|
||||
void mousePressEvent(QMouseEvent *ev) override ;
|
||||
void mouseMoveEvent(QMouseEvent *ev) override ;
|
||||
void mouseReleaseEvent(QMouseEvent *ev) override ;
|
||||
|
||||
void currentChanged(const QModelIndex ¤t,
|
||||
const QModelIndex &previous) override;
|
||||
private:
|
||||
bool isDragging = false;
|
||||
int ox,oy,ov;
|
||||
bool mIsDragging;
|
||||
int mOriginPosY,mOriginScrollBarV;
|
||||
|
||||
};
|
||||
|
||||
|
||||
#endif //GUI_SLIDEABLETABLEVIEW_H
|
||||
#endif //GUI_SLIDETABLEVIEW_H
|
||||
@@ -1,75 +0,0 @@
|
||||
//
|
||||
// Created by Krad on 2021/11/23.
|
||||
//
|
||||
|
||||
#include "SlideableTableView.h"
|
||||
#include <QScrollBar>
|
||||
#include <QMouseEvent>
|
||||
#include <QApplication>
|
||||
#include <cmath>
|
||||
|
||||
SlideableTableView::SlideableTableView(QWidget *parent) : QTableView(parent) {
|
||||
|
||||
}
|
||||
|
||||
SlideableTableView::~SlideableTableView() {
|
||||
|
||||
}
|
||||
|
||||
void SlideableTableView::mousePressEvent(QMouseEvent *ev) {
|
||||
isDragging = true;
|
||||
ox = ev->pos().x();
|
||||
oy = ev->pos().y();
|
||||
ov = this->verticalScrollBar()->value();
|
||||
QTableView::mousePressEvent(ev);
|
||||
}
|
||||
|
||||
void SlideableTableView::mouseMoveEvent(QMouseEvent *ev) {
|
||||
if (!isDragging)
|
||||
{
|
||||
QTableView::mouseMoveEvent(ev);
|
||||
return;
|
||||
} else{
|
||||
if (this->verticalScrollBar()->isVisible())
|
||||
{
|
||||
int nv = (int)round(((double)ov*30.0+((double)(oy-ev->pos().y())))/30.0);
|
||||
int max = this->verticalScrollBar()->maximum();
|
||||
int min = this->verticalScrollBar()->minimum();
|
||||
printf("max:%d, min:%d, nv:%d\r\n", max, min, nv);
|
||||
nv = nv>max?max:(nv<min?min:nv);
|
||||
this->verticalScrollBar()->setValue(nv);
|
||||
}
|
||||
// if (this->verticalScrollBar()->isVisible())
|
||||
// {
|
||||
// this->verticalScrollBar()->setPageStep(this->viewport()->height());
|
||||
// this->verticalScrollBar()->setRange(0,this->height());
|
||||
// int nv =this->verticalScrollBar()->value()+(oy-ev->pos().y());
|
||||
// int max = this->verticalScrollBar()->maximum();
|
||||
// int min = this->verticalScrollBar()->minimum();
|
||||
// printf("max:%d, min:%d, nv:%d\r\n", max, min, nv);
|
||||
// nv = nv>max?max:(nv<min?min:nv);
|
||||
//
|
||||
//// this->verticalScrollBar()->setValue(nv);
|
||||
// return;
|
||||
// }
|
||||
}
|
||||
QTableView::mouseMoveEvent(ev);
|
||||
}
|
||||
|
||||
void SlideableTableView::mouseReleaseEvent(QMouseEvent *ev) {
|
||||
if (!isDragging)
|
||||
{
|
||||
isDragging = false;
|
||||
}
|
||||
|
||||
// if (this->verticalScrollBar()->isVisible())
|
||||
// {
|
||||
// QApplication::sendEvent(this->verticalScrollBar(),ev);
|
||||
// }
|
||||
QTableView::mouseReleaseEvent(ev);
|
||||
}
|
||||
|
||||
void SlideableTableView::currentChanged(const QModelIndex ¤t, const QModelIndex &previous) {
|
||||
QTableView::currentChanged(current, previous);
|
||||
emit currentRowChanged(current.row());
|
||||
}
|
||||
@@ -6,7 +6,7 @@
|
||||
#include <QHBoxLayout>
|
||||
#include <QToolButton>
|
||||
#include <QTableWidget>
|
||||
#include "components/SlideableTableView.h"
|
||||
#include "components/SlideTableView.h"
|
||||
#include <QHeaderView>
|
||||
#include <QUuid>
|
||||
#include <QDate>
|
||||
@@ -53,7 +53,7 @@ SelectFormWidget::SelectFormWidget(QWidget* parent) :
|
||||
contentLayout->setContentsMargins(5, 5, 0, 5);
|
||||
this->ui->contentWidget->setLayout(contentLayout);
|
||||
// TableView for patient
|
||||
SlideableTableView* table = new SlideableTableView(this);
|
||||
SlideTableView* table = new SlideTableView(this);
|
||||
table->setAlternatingRowColors(true);
|
||||
table->setSelectionMode(QAbstractItemView::SingleSelection);
|
||||
table->setEditTriggers(QAbstractItemView::NoEditTriggers);
|
||||
@@ -134,7 +134,7 @@ SelectFormWidget::SelectFormWidget(QWidget* parent) :
|
||||
btnAdd->setEnabled(!disableALL);
|
||||
};
|
||||
//table current row selection changing event
|
||||
connect(table, &SlideableTableView::currentRowChanged, [=](int row) {
|
||||
connect(table, &SlideTableView::currentRowChanged, [=](int row) {
|
||||
setPatientDetail(table, model, edit_patient);
|
||||
prepareButtons(false);
|
||||
});
|
||||
@@ -310,7 +310,7 @@ SelectFormWidget::SelectFormWidget(QWidget* parent) :
|
||||
prepareButtons(false);
|
||||
}
|
||||
|
||||
void SelectFormWidget::setPatientDetail(const SlideableTableView *table, const QSqlTableModel *model,
|
||||
void SelectFormWidget::setPatientDetail(const SlideTableView *table, const QSqlTableModel *model,
|
||||
EditPatientForm *edit_patient) const {
|
||||
PatientInformation pat;
|
||||
#define ADD_PATIENT_PROPERTY(val)\
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
#include "forms/tabformwidget.h"
|
||||
#include "EditPatientDialog.h"
|
||||
class EditPatientForm;
|
||||
class SlideableTableView;
|
||||
class SlideTableView;
|
||||
class SelectFormWidget: public TabFormWidget {
|
||||
Q_OBJECT
|
||||
public:
|
||||
@@ -20,7 +20,7 @@ private:
|
||||
QString selectedPatientUID;
|
||||
|
||||
void
|
||||
setPatientDetail(const SlideableTableView *table, const QSqlTableModel *model, EditPatientForm *edit_patient) const;
|
||||
setPatientDetail(const SlideTableView *table, const QSqlTableModel *model, EditPatientForm *edit_patient) const;
|
||||
};
|
||||
|
||||
|
||||
|
||||
@@ -13,13 +13,13 @@
|
||||
#include "db/SQLHelper.h"
|
||||
#include "models/User.h"
|
||||
#include <QSqlRecord>
|
||||
#include "components/SlideableTableView.h"
|
||||
#include "components/SlideTableView.h"
|
||||
#include "src/dialogs/AccountFormDialog.h"
|
||||
#include "event/EventCenter.h"
|
||||
AccountTableForm::AccountTableForm(QWidget* parent) {
|
||||
layout = new QVBoxLayout(this);
|
||||
layout->setMargin(0);
|
||||
QTableView* table = new SlideableTableView(this);
|
||||
QTableView* table = new SlideTableView(this);
|
||||
layout->addWidget(table);
|
||||
// TableView for patient
|
||||
table->setAlternatingRowColors(true);
|
||||
|
||||
@@ -216,7 +216,7 @@ QLineEdit#led_inface{font-size:15px;border: 0px;}</string>
|
||||
<number>30</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="SlideableTableView" name="tbl_addr"/>
|
||||
<widget class="SlideTableView" name="tbl_addr"/>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
@@ -381,7 +381,7 @@ QLineEdit#led_inface{font-size:15px;border: 0px;}</string>
|
||||
<number>9</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="SlideableTableView" name="tbl_route">
|
||||
<widget class="SlideTableView" name="tbl_route">
|
||||
<property name="gridStyle">
|
||||
<enum>Qt::DashLine</enum>
|
||||
</property>
|
||||
@@ -557,9 +557,9 @@ QLineEdit#led_inface{font-size:15px;border: 0px;}</string>
|
||||
<container>1</container>
|
||||
</customwidget>
|
||||
<customwidget>
|
||||
<class>SlideableTableView</class>
|
||||
<class>SlideTableView</class>
|
||||
<extends>QTableView</extends>
|
||||
<header location="global">components/SlideableTableView.h</header>
|
||||
<header location="global">components/SlideTableView.h</header>
|
||||
</customwidget>
|
||||
</customwidgets>
|
||||
<resources/>
|
||||
|
||||
Reference in New Issue
Block a user