void SubToolBar::initRectLabel() { m_rectLabel = new QLabel(this); QButtonGroup* rectBtnGroup = new QButtonGroup(); rectBtnGroup->setExclusive(true); QList<ToolButton*> btnList; //rectangle, oval... ToolButton* fineLine = new ToolButton(); fineLine->setObjectName("FineLine"); rectBtnGroup->addButton(fineLine); btnList.append(fineLine); ToolButton* mediumLine = new ToolButton(); mediumLine->setObjectName("MediumLine"); rectBtnGroup->addButton(mediumLine); btnList.append(mediumLine); ToolButton* thickLine = new ToolButton(); thickLine->setObjectName("ThickLine"); rectBtnGroup->addButton(thickLine); btnList.append(thickLine); //separator line... QLabel* vSeparatorLine = new QLabel(); vSeparatorLine->setFixedSize(1, 16); vSeparatorLine->setObjectName("VerticalSeparatorLine"); //blur, mosaic... ToolButton* blurBtn = new ToolButton(); blurBtn->setObjectName("BlurBtn"); ToolButton* mosaicBtn = new ToolButton(); mosaicBtn->setObjectName("MosaicBtn"); connect(blurBtn, &ToolButton::clicked, this, [=]{ ConfigSettings::instance()->setValue("effect", "is_blur", blurBtn->isChecked()); if (blurBtn->isChecked()) { mosaicBtn->setChecked(false); ConfigSettings::instance()->setValue("effect", "is_mosaic", false); } }); connect(mosaicBtn, &ToolButton::clicked, this, [=]{ ConfigSettings::instance()->setValue("effect", "is_mosaic", mosaicBtn->isChecked()); if (mosaicBtn->isChecked()) { blurBtn->setChecked(false); ConfigSettings::instance()->setValue("effect", "is_blur", false); } }); int lineWidthIndex = ConfigSettings::instance()->value("rectangle", "linewidth_index").toInt(); btnList[lineWidthIndex]->setChecked(true); QHBoxLayout* rectLayout = new QHBoxLayout(); rectLayout->setMargin(0); rectLayout->setSpacing(0); rectLayout->addSpacing(1); for (int i = 0; i < btnList.length(); i++) { rectLayout->addWidget(btnList[i]); rectLayout->addSpacing(BUTTON_SPACING); connect(btnList[i], &ToolButton::clicked, this, [=]{ ConfigSettings::instance()->setValue(m_currentType, "linewidth_index", i); }); } rectLayout->addSpacing(16); rectLayout->addWidget(vSeparatorLine); rectLayout->addSpacing(16); rectLayout->addWidget(blurBtn); rectLayout->addSpacing(BUTTON_SPACING); rectLayout->addWidget(mosaicBtn); rectLayout->addStretch(); m_rectLabel->setLayout(rectLayout); addWidget(m_rectLabel); connect(this, &SubToolBar::shapeChanged, this, [=]{ int lineIndex = ConfigSettings::instance()->value(m_currentType, "linewidth_index").toInt(); btnList[lineIndex]->setChecked(true); }); }
void SubToolBar::initArrowLabel() { m_arrowLabel = new QLabel(this); //arrow QButtonGroup* arrowBtnGroup = new QButtonGroup(); arrowBtnGroup->setExclusive(true); QList<ToolButton*> arrowBtnList; ToolButton* arrowFineLine = new ToolButton(); arrowFineLine->setObjectName("ArrowFine"); arrowBtnGroup->addButton(arrowFineLine); arrowBtnList.append(arrowFineLine); ToolButton* arrowMediumLine = new ToolButton(); arrowMediumLine->setObjectName("ArrowMedium"); arrowBtnGroup->addButton(arrowMediumLine); arrowBtnList.append(arrowMediumLine); ToolButton* arrowThickLine = new ToolButton(); arrowThickLine->setObjectName("ArrowThick"); arrowBtnGroup->addButton(arrowThickLine); arrowBtnList.append(arrowThickLine); //line QButtonGroup* lineBtnGroup = new QButtonGroup(); lineBtnGroup->setExclusive(true); //rectangle, oval... ToolButton* fineLine = new ToolButton(); fineLine->setObjectName("ArrowFineLine"); lineBtnGroup->addButton(fineLine); arrowBtnList.append(fineLine); ToolButton* mediumLine = new ToolButton(); mediumLine->setObjectName("ArrowMediumLine"); lineBtnGroup->addButton(mediumLine); arrowBtnList.append(mediumLine); ToolButton* thickLine = new ToolButton(); thickLine->setObjectName("ArrowThickLine"); lineBtnGroup->addButton(thickLine); arrowBtnList.append(thickLine); //separator line... QLabel* vSeparatorLine = new QLabel(); vSeparatorLine->setFixedSize(1, 16); vSeparatorLine->setObjectName("VerticalSeparatorLine"); QButtonGroup* styleBtnGroup = new QButtonGroup; styleBtnGroup->setExclusive(true); ToolButton* lineBtn = new ToolButton(); lineBtn->setObjectName("LineBtn"); styleBtnGroup->addButton(lineBtn, 0); ToolButton* arrowBtn = new ToolButton(); arrowBtn->setObjectName("ArrowBtn"); arrowBtn->setChecked(true); styleBtnGroup->addButton(arrowBtn, 1); if (ConfigSettings::instance()->value("arrow", "is_straight").toBool()) { lineBtn->setChecked(true); } else { arrowBtn->setChecked(true); } int arrowWidthIndex = ConfigSettings::instance()->value("arrow", "arrow_linewidth_index").toInt(); int sLineWidthIndex = ConfigSettings::instance()->value("arrow", "straightline_linewidth").toInt(); arrowBtnList[arrowWidthIndex]->setChecked(true); arrowBtnList[sLineWidthIndex+3]->setChecked(true); QHBoxLayout* arrowLayout = new QHBoxLayout(); arrowLayout->setMargin(0); arrowLayout->setSpacing(BUTTON_SPACING); arrowLayout->addSpacing(1); for (int j = 0; j < arrowBtnList.length(); j++) { arrowLayout->addWidget(arrowBtnList[j]); // arrowLayout->addSpacing(BUTTON_SPACING); connect(arrowBtnList[j], &ToolButton::clicked, this, [=]{ if (j < 3) { ConfigSettings::instance()->setValue("arrow", "arrow_linewidth_index", j); } else { ConfigSettings::instance()->setValue("arrow", "straightline_linewidth_index", j - 3); } }); } arrowLayout->addSpacing(16); arrowLayout->addWidget(vSeparatorLine); arrowLayout->addSpacing(16); arrowLayout->addWidget(lineBtn); arrowLayout->addWidget(arrowBtn); arrowLayout->addStretch(); m_arrowLabel->setLayout(arrowLayout); addWidget(m_arrowLabel); fineLine->hide(); mediumLine->hide(); thickLine->hide(); connect(arrowBtn, &ToolButton::toggled, this, [=](bool checked){ if (checked) { arrowFineLine->show(); arrowMediumLine->show(); arrowThickLine->show(); fineLine->hide(); mediumLine->hide(); thickLine->hide(); } else { arrowFineLine->hide(); arrowMediumLine->hide(); arrowThickLine->hide(); fineLine->show(); mediumLine->show(); thickLine->show(); } ConfigSettings::instance()->setValue("arrow", "is_straight", !checked); }); connect(this, &SubToolBar::shapeChanged, this, [=]{ if (ConfigSettings::instance()->value("arrow", "is_straight").toBool()) { arrowFineLine->hide(); arrowMediumLine->hide(); arrowThickLine->hide(); fineLine->show(); mediumLine->show(); thickLine->show(); } else { arrowFineLine->show(); arrowMediumLine->show(); arrowThickLine->show(); fineLine->hide(); mediumLine->hide(); thickLine->hide(); } int arrowLineWidth = ConfigSettings::instance()->value("arrow", "arrow_linewidth_index").toInt(); int sLineWidth = ConfigSettings::instance()->value("arrow", "straightline_linewidth_index").toInt(); arrowBtnList[arrowLineWidth]->setChecked(true); arrowBtnList[sLineWidth+3]->setChecked(true); }); }