Files
2024-02-27 14:55:21 +08:00

184 lines
4.1 KiB
C++

#include "m_toolbar.h"
m_toolbar::m_toolbar(QWidget *parent)
:QToolBar(parent)
{
setMouseTracking(true);
}
m_toolbar::~m_toolbar(void)
{
for (auto val = 0; val < btnlist.size(); val++ )
{
if(btnlist.at(val))
{
QToolButton *ptr =const_cast<QToolButton*>(btnlist.at(val));
delete ptr;
ptr = nullptr;
}
}
qDebug() << __FUNCTION__ << " line:" << __LINE__ << " ~m_toolbar success! " ;
}
void m_toolbar::setShowFlag( bool flag )
{
if ( flag )
initButtonList();
}
void m_toolbar::initButtonList()
{
QString btnStyle = "QToolButton{background:transparent;border:0px;} "
"QToolButton:hover{background-color:rgb(27, 27, 27);}"
"QToolTip{border:1px solid rgb(50,50,50); background-color: rgb(50,50,50); color:rgb(255,255,255); font-size:12px;}"
"QToolButton:pressed{color: rgb(219,219,219);background-color:transparent;}";
QDir currPath = QApplication::applicationDirPath();
//单步执行
QToolButton *start_Ptr = new QToolButton;
start_Ptr->setIcon( QIcon(currPath.path() + "/Icon/oncerun.png"));
start_Ptr->setStyleSheet(btnStyle);
start_Ptr->setToolTip("单步执行");
start_Ptr->setFixedSize(25,25);
btnlist.append(start_Ptr);
//循环运行
QToolButton *loop_Ptr = new QToolButton;
loop_Ptr->setIcon( QIcon(currPath.path() + "/Icon/cycleButton.png") );
loop_Ptr->setStyleSheet(btnStyle);
loop_Ptr->setToolTip("循环执行");
loop_Ptr->setFixedSize(25,25);
btnlist.append(loop_Ptr);
//停止
QToolButton *stop_ptr = new QToolButton;
stop_ptr->setIcon(QIcon(currPath.path() + "/Icon/stop_n.png"));
stop_ptr->setStyleSheet(btnStyle);
stop_ptr->setToolTip("停止执行");
stop_ptr->setFixedSize(25,25);
btnlist.append(stop_ptr);
QWidget* m_spacer = new QWidget;
m_spacer->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
QHBoxLayout *hTopBox = new QHBoxLayout;
hTopBox->addStretch();
hTopBox->addWidget(start_Ptr);
hTopBox->addWidget(loop_Ptr);
hTopBox->addWidget(stop_ptr);
hTopBox->setSpacing(10);
hTopBox->setContentsMargins(0,0,0,0);
delete m_spacer->layout();
m_spacer->setLayout(hTopBox);
this->addWidget(m_spacer);
this->setContentsMargins(0,0,30,0);
connect(start_Ptr,SIGNAL(clicked(bool)),this,SLOT(select_state()));
connect(loop_Ptr,SIGNAL(clicked(bool)),this,SLOT(select_move()));
connect(stop_ptr,SIGNAL(clicked(bool)),this,SLOT(select_show_hide_mark()));
}
void m_toolbar::setDrawType(int type)
{
switch (type)
{
case 1:
{
btnlist.at(0)->setEnabled(true);
btnlist.at(1)->setEnabled(true);
btnlist.at(2)->setEnabled(true);
break;
}
case 2:
{
btnlist.at(3)->setEnabled(true);
btnlist.at(4)->setEnabled(true);
btnlist.at(5)->setEnabled(true);
break;
}
case 3:
{
btnlist.at(5)->setEnabled(true);
break;
}
case 4:
{
btnlist.at(6)->setEnabled(true);
break;
}
default:
break;
}
}
void m_toolbar::select_state()
{
emit selectShapeSignal(1);
}
void m_toolbar::select_move()
{
emit selectShapeSignal(2);
}
void m_toolbar::select_show_hide_mark()
{
if(flag)
{
btnlist.at(2)->setIcon(QIcon(":/Image/src/mark_b.png"));
flag = false;
}
else
{
btnlist.at(2)->setIcon(QIcon(":/Image/src/mark_n.png"));
flag = true;
}
emit selectShapeSignal(2);
}
void m_toolbar::select_rect()
{
emit selectShapeSignal(3);
}
void m_toolbar::select_polygon()
{
emit selectShapeSignal(4);
}
void m_toolbar::select_circle()
{
emit selectShapeSignal(5);
}
void m_toolbar::select_circle_fitting()
{
emit selectShapeSignal(6);
}
void m_toolbar::select_line_measurement()
{
emit selectShapeSignal(7);
}
void m_toolbar::select_spin_valueChanged(int value)
{
emit changeVaule(value);
emit selectShapeSignal(8);
}
void m_toolbar::mouseMoveEvent(QMouseEvent *event)
{
emit Change_to_CannotDragResize();
}