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