drag and drop => two click event, tableWidget Horizontol Size Error Fix

This commit is contained in:
yonghye 2018-11-07 14:45:20 +09:00
parent cdb19b9ffd
commit 1df45ea003
4 changed files with 62 additions and 45 deletions

View File

@ -15,11 +15,9 @@ QColor label_img::BOX_COLORS[10] ={ Qt::green,
Qt::darkCyan}; Qt::darkCyan};
label_img::label_img(QWidget *parent) label_img::label_img(QWidget *parent)
:QLabel(parent), :QLabel(parent)
m_bMouseLeftButtonClicked(false),
m_focusedObjectLabel(0)
{ {
init();
} }
void label_img::mouseMoveEvent(QMouseEvent *ev) void label_img::mouseMoveEvent(QMouseEvent *ev)
@ -45,8 +43,31 @@ void label_img::mousePressEvent(QMouseEvent *ev)
} }
else if(ev->button() == Qt::LeftButton) else if(ev->button() == Qt::LeftButton)
{ {
m_bMouseLeftButtonClicked = true; if(m_bLabelingStarted == false)
m_relatvie_mouse_pos_LBtnClicked_in_ui = m_relative_mouse_pos_in_ui; {
m_relatvie_mouse_pos_LBtnClicked_in_ui = m_relative_mouse_pos_in_ui;
m_bLabelingStarted = true;
}
else
{
setMousePosition(ev->x(), ev->y());
ObjectLabelingBox objBoundingbox;
objBoundingbox.label = m_focusedObjectLabel;
objBoundingbox.box = getRelativeRectFromTwoPoints(m_relative_mouse_pos_in_ui,
m_relatvie_mouse_pos_LBtnClicked_in_ui);
bool width_is_too_small = objBoundingbox.box.width() < 0.01;
bool height_is_too_small = objBoundingbox.box.height() < 0.01;
if(!width_is_too_small && !height_is_too_small)
m_objBoundingBoxes.push_back(objBoundingbox);
m_bLabelingStarted = false;
showImage();
}
} }
emit Mouse_Pressed(); emit Mouse_Pressed();
@ -55,30 +76,29 @@ void label_img::mousePressEvent(QMouseEvent *ev)
void label_img::mouseReleaseEvent(QMouseEvent *ev) void label_img::mouseReleaseEvent(QMouseEvent *ev)
{ {
std::cout<< "released"<< std::endl; std::cout<< "released"<< std::endl;
if(ev->button() == Qt::LeftButton && m_bMouseLeftButtonClicked == true)
{
setMousePosition(ev->x(), ev->y());
ObjectLabelingBox objBoundingbox;
objBoundingbox.label = m_focusedObjectLabel;
objBoundingbox.box = getRelativeRectFromTwoPoints(m_relative_mouse_pos_in_ui,
m_relatvie_mouse_pos_LBtnClicked_in_ui);
bool width_is_too_small = objBoundingbox.box.width() < 0.01;
bool height_is_too_small = objBoundingbox.box.height() < 0.01;
if(!width_is_too_small && !height_is_too_small)
m_objBoundingBoxes.push_back(objBoundingbox);
m_bMouseLeftButtonClicked = false;
}
showImage();
emit Mouse_Release(); emit Mouse_Release();
} }
void label_img::init()
{
m_objBoundingBoxes.clear();
m_bLabelingStarted = false;
m_focusedObjectLabel = 0;
QPoint mousePosInUi = this->mapFromGlobal(QCursor::pos());
bool mouse_is_in_image = QRect(0, 0, this->width(), this->height()).contains(mousePosInUi);
if (mouse_is_in_image)
{
setMousePosition(mousePosInUi.x(), mousePosInUi.y());
}
else
{
setMousePosition(0., 0.);
}
}
void label_img::setMousePosition(int x, int y) void label_img::setMousePosition(int x, int y)
{ {
if(x < 0) x = 0; if(x < 0) x = 0;
@ -95,19 +115,7 @@ void label_img::openImage(const QString &qstrImg)
m_inputImg = QImage(qstrImg); m_inputImg = QImage(qstrImg);
m_inputImg = m_inputImg.convertToFormat(QImage::Format_RGB888); m_inputImg = m_inputImg.convertToFormat(QImage::Format_RGB888);
m_objBoundingBoxes.clear(); init();
m_relatvie_mouse_pos_LBtnClicked_in_ui = QPointF();
m_bMouseLeftButtonClicked = false;
QPoint mousePosInUi = this->mapFromGlobal(QCursor::pos());
bool mouse_is_in_image = QRect(0, 0, this->width(), this->height()).contains(mousePosInUi);
if (mouse_is_in_image)
{
setMousePosition(mousePosInUi.x(), mousePosInUi.y());
}
} }
void label_img::showImage() void label_img::showImage()
@ -187,7 +195,7 @@ QImage label_img::crop(QRect rect)
void label_img::drawCrossLine(QPainter& painter, QColor color, int thickWidth) void label_img::drawCrossLine(QPainter& painter, QColor color, int thickWidth)
{ {
if(m_relative_mouse_pos_in_ui == QPointF()) return; if(m_relative_mouse_pos_in_ui == QPointF(0., 0.)) return;
QPen pen; QPen pen;
pen.setWidth(thickWidth); pen.setWidth(thickWidth);
@ -207,7 +215,7 @@ void label_img::drawCrossLine(QPainter& painter, QColor color, int thickWidth)
void label_img::drawFocusedObjectBox(QPainter& painter, Qt::GlobalColor color, int thickWidth) void label_img::drawFocusedObjectBox(QPainter& painter, Qt::GlobalColor color, int thickWidth)
{ {
if(m_bMouseLeftButtonClicked) if(m_bLabelingStarted == true)
{ {
QPen pen; QPen pen;
pen.setWidth(thickWidth); pen.setWidth(thickWidth);

View File

@ -32,12 +32,13 @@ public:
int m_imgX; int m_imgX;
int m_imgY; int m_imgY;
bool m_bMouseLeftButtonClicked; bool m_bLabelingStarted;
static QColor BOX_COLORS[10]; static QColor BOX_COLORS[10];
QVector <ObjectLabelingBox> m_objBoundingBoxes; QVector <ObjectLabelingBox> m_objBoundingBoxes;
void init();
void openImage(const QString &); void openImage(const QString &);
void showImage(); void showImage();

View File

@ -326,8 +326,9 @@ void MainWindow::keyPressEvent(QKeyEvent * event)
{ {
cout << "key pressed" <<endl; cout << "key pressed" <<endl;
int nKey = event->key(); int nKey = event->key();
bool graveAccentKeyIsPressed = (nKey == Qt::Key_QuoteLeft); bool graveAccentKeyIsPressed = (nKey == Qt::Key_QuoteLeft);
bool numKeyIsPressed = (nKey >= Qt::Key_0 && nKey <= Qt::Key_9 ); bool numKeyIsPressed = (nKey >= Qt::Key_0 && nKey <= Qt::Key_9 );
if(graveAccentKeyIsPressed) if(graveAccentKeyIsPressed)
{ {
@ -397,6 +398,7 @@ void MainWindow::init_tableWidget()
{ {
ui->tableWidget_label->horizontalHeader()->setVisible(true); ui->tableWidget_label->horizontalHeader()->setVisible(true);
ui->tableWidget_label->horizontalHeader()->setStyleSheet(""); ui->tableWidget_label->horizontalHeader()->setStyleSheet("");
ui->tableWidget_label->horizontalHeader()->setStretchLastSection(true);
disconnect(ui->tableWidget_label->horizontalHeader(), SIGNAL(sectionPressed(int)),ui->tableWidget_label, SLOT(selectColumn(int))); disconnect(ui->tableWidget_label->horizontalHeader(), SIGNAL(sectionPressed(int)),ui->tableWidget_label, SLOT(selectColumn(int)));
} }

View File

@ -604,7 +604,7 @@ border-color: rgb(0, 255, 255);</string>
</property> </property>
<property name="maximumSize"> <property name="maximumSize">
<size> <size>
<width>204</width> <width>210</width>
<height>16777215</height> <height>16777215</height>
</size> </size>
</property> </property>
@ -671,9 +671,15 @@ QTableView {
<attribute name="horizontalHeaderHighlightSections"> <attribute name="horizontalHeaderHighlightSections">
<bool>false</bool> <bool>false</bool>
</attribute> </attribute>
<attribute name="horizontalHeaderMinimumSectionSize">
<number>40</number>
</attribute>
<attribute name="horizontalHeaderShowSortIndicator" stdset="0"> <attribute name="horizontalHeaderShowSortIndicator" stdset="0">
<bool>true</bool> <bool>true</bool>
</attribute> </attribute>
<attribute name="horizontalHeaderStretchLastSection">
<bool>true</bool>
</attribute>
<attribute name="verticalHeaderVisible"> <attribute name="verticalHeaderVisible">
<bool>false</bool> <bool>false</bool>
</attribute> </attribute>