0
외부 파일과 그의 내부 행 모두를 삭제할 수있는 QTableWidget 서브 클래스를 만듭니다. 행을 드래그하여 다른 위치로 이동하는 동안 행 사본이 마우스 커서에 고정되어 나타납니다. 드래그하는 동안 고정 행 사본을 제거하는 방법이 있습니까? 여기 행 드래그 애니메이션 변경
은 클래스입니다 :#include <QtGui>
#include <QDrag>
#include "dtablewidget.h"
#include "nofocusproxystyle.cpp"
DTableWidget::DTableWidget(QWidget *parent) : QTableWidget(parent) {
//set widget default properties:
setFrameStyle(QFrame::Sunken | QFrame::StyledPanel);
viewport()->setAcceptDrops(true); //set accept drop on viewport
setDragDropOverwriteMode(false); //set drag drop overwrite to false
setDropIndicatorShown(true); //show drop indicator on tag drop
setDragDropMode(QAbstractItemView::InternalMove); //enable internal drag drop on tablular dispaly
setSelectionBehavior(QAbstractItemView::SelectRows); //enable selection of entire row
setEditTriggers(QAbstractItemView::NoEditTriggers);//preventing editing
setAlternatingRowColors(true);
setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOn);
setShowGrid(false);
setAcceptDrops(true);
setWordWrap(false);
setStyleSheet("selection-background-color: yellow;"
"selection-color: #002041;"
"font-size: 75%;"
);
setStyle(new NoFocusProxyStyle(style()));
}
void DTableWidget::dragEnterEvent(QDragEnterEvent *event) {
event->acceptProposedAction();
}
void DTableWidget::dragMoveEvent(QDragMoveEvent *event) {
event->acceptProposedAction();
}
void DTableWidget::dropEvent(QDropEvent *event) {
event->acceptProposedAction();
if (event->mimeData()->urls().size() > 0) {
emit dropped(event->mimeData());
}
else {
QPoint old_coordinates = QPoint(-1,-1);
if(currentItem() != NULL) //Check if user is not accessing empty cell
{
old_coordinates = QPoint(currentItem()->row(), currentItem()->column());
}
QTableWidget::dropEvent(event);
if(this->itemAt(event->pos().x(), event->pos().y()) != NULL && old_coordinates != QPoint(-1, -1))
{
emit moved(old_coordinates.x(), itemAt(event->pos().x(), event->pos().y())->row());
}
}
}
void DTableWidget::dragLeaveEvent(QDragLeaveEvent *event) {
event->accept();
}
void DTableWidget::keyPressEvent(QKeyEvent *event) {
emit keyboard(event);
}