#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(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); // //矩形 // QToolButton *rectPtr = new QToolButton; // rectPtr->setIcon(QIcon(":/Image/src/rect_n.png")); // rectPtr->setFixedSize(25,25); // rectPtr->setStyleSheet(btnStyle); // // rectPtr->setEnabled(false); // btnlist.append(rectPtr); // //多边形 // QToolButton *toolButton_polygon = new QToolButton; // toolButton_polygon->setIcon(QIcon(":/Image/src/polygon_n.png")); // toolButton_polygon->setFixedSize(25,25); // toolButton_polygon->setStyleSheet(btnStyle); // // toolButton_polygon->setEnabled(false); // btnlist.append(toolButton_polygon); // //圆形 // QToolButton *toolButton_circle = new QToolButton; // toolButton_circle->setIcon(QIcon(":/Image/src/circle_n.png")); // toolButton_circle->setFixedSize(25,25); // toolButton_circle->setStyleSheet(btnStyle); // // toolButton_circle->setEnabled(false); // btnlist.append(toolButton_circle); // //圆拟合 // QToolButton *toolButton_circle_fitting = new QToolButton; // toolButton_circle_fitting->setIcon(QIcon(":/Image/src/circle_fitting.png")); // toolButton_circle_fitting->setFixedSize(25,25); // toolButton_circle_fitting->setStyleSheet(btnStyle); // // toolButton_circle_fitting->setEnabled(false); // btnlist.append(toolButton_circle_fitting); // //直线拟合 // QToolButton *toolButton_line_fitting = new QToolButton; // toolButton_line_fitting->setIcon(QIcon(":/Image/src/StraightLine.png")); // toolButton_line_fitting->setFixedSize(25,25); // toolButton_line_fitting->setStyleSheet(btnStyle); // // toolButton_line_fitting->setEnabled(false); // btnlist.append(toolButton_line_fitting); // //显示添加的卡尺个数标签 // QLabel *label_calliper = new QLabel; // label_calliper->setStyleSheet("color: rgb(219,219,219);"); // label_calliper->setText(tr("卡尺个数:")); // //显示卡尺数量 // QSpinBox *toolButton_SpinBox = new QSpinBox; // toolButton_SpinBox->setStyleSheet("color: rgb(219,219,219);background-color:transparent;"); // toolButton_SpinBox->setMaximum(100); // toolButton_SpinBox->setValue(SpinBoxValue); // // toolButton_SpinBox->setEnabled(false); // QToolButton *m_Last = new QToolButton(this); // m_Last->setIcon(QIcon(":/Image/Last_n.png")); // m_Last->setStyleSheet(btnStyle); // m_Last->setFixedSize(25,25); // btnlist.append(m_Last); // QToolButton *m_Next = new QToolButton(this); // m_Next->setIcon(QIcon(":/Image/Next_n.png")); // m_Next->setStyleSheet(btnStyle); // m_Next->setFixedSize(25,25); // btnlist.append(m_Next); // QHBoxLayout *hBox = new QHBoxLayout; // hBox->addWidget(label_calliper); // hBox->addWidget(toolButton_SpinBox); // QWidget *calliperPtr = new QWidget; // calliperPtr->setStyleSheet("background-color:transparent"); // delete calliperPtr->layout(); // calliperPtr->setLayout(hBox); 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); // this->addWidget(calliperPtr); 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())); // connect(rectPtr,SIGNAL(clicked(bool)),this,SLOT(select_rect())); // connect(toolButton_polygon,SIGNAL(clicked(bool)),this,SLOT(select_polygon())); // connect(toolButton_circle,SIGNAL(clicked(bool)),this,SLOT(select_circle())); // connect(toolButton_circle_fitting,SIGNAL(clicked(bool)),this,SLOT(select_circle_fitting())); // connect(toolButton_line_fitting,SIGNAL(clicked(bool)),this,SLOT(select_line_measurement())); // connect(toolButton_SpinBox, SIGNAL(valueChanged(int)),this, SLOT(select_spin_valueChanged(int))); } 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(); }