#include "frmplotbtn.h" #include "ui_frmplotbtn.h" #include "quihelper.h" frmPlotBtn::frmPlotBtn(QWidget *parent) : QWidget(parent), ui(new Ui::frmPlotBtn) { ui->setupUi(this); this->initForm(); } frmPlotBtn::~frmPlotBtn() { delete ui; } void frmPlotBtn::initForm() { //加入按钮组,会自动产生互斥效果,同时方便处理信号 btns1 = new QButtonGroup(this); btns1->addButton(ui->btn10, 0); btns1->addButton(ui->btn11, 1); btns1->addButton(ui->btn12, 2); btns1->addButton(ui->btn13, 3); btns1->addButton(ui->btn14, 4); btns1->addButton(ui->btn15, 5); btns1->addButton(ui->btn16, 6); btns2 = new QButtonGroup(this); btns2->addButton(ui->btn20, 0); btns2->addButton(ui->btn21, 1); btns2->addButton(ui->btn22, 2); btns2->addButton(ui->btn23, 3); btns2->addButton(ui->btn24, 4); btns3 = new QButtonGroup(this); btns3->addButton(ui->btn30, 0); btns3->addButton(ui->btn31, 1); btns3->addButton(ui->btn32, 2); #if (QT_VERSION >= QT_VERSION_CHECK(6,0,0)) connect(btns1, SIGNAL(idClicked(int)), this, SLOT(btn1Clicked(int))); connect(btns2, SIGNAL(idClicked(int)), this, SLOT(btn2Clicked(int))); connect(btns3, SIGNAL(idClicked(int)), this, SLOT(btn3Clicked(int))); #else connect(btns1, SIGNAL(buttonClicked(int)), this, SLOT(btn1Clicked(int))); connect(btns2, SIGNAL(buttonClicked(int)), this, SLOT(btn2Clicked(int))); connect(btns3, SIGNAL(buttonClicked(int)), this, SLOT(btn3Clicked(int))); #endif //备用按钮用于设置未选中 ui->btn10->setVisible(false); ui->btn20->setVisible(false); ui->btn30->setVisible(false); //先隐藏弹出功能按钮 ui->widget1->setVisible(false); ui->widget2->setVisible(false); ui->widget3->setVisible(false); //设置自定义属性,以便应用样式 ui->widget1->setProperty("flag", "plotbtn"); ui->widget2->setProperty("flag", "plotbtn"); ui->widget3->setProperty("flag", "plotbtn"); this->setProperty("flag", "plotbtn"); } void frmPlotBtn::btn1Clicked(int index) { //发信号过去处理 emit btnClicked(0, index); } void frmPlotBtn::btn2Clicked(int index) { //发信号过去处理 emit btnClicked(1, index); } void frmPlotBtn::btn3Clicked(int index) { //发信号过去处理 emit btnClicked(2, index); } void frmPlotBtn::on_btn1_clicked() { //隐藏功能按钮则清除右侧所有选中按钮,用选中不可见的按钮来实现选中互斥 if (!ui->btn1->isChecked()) { ui->btn10->setChecked(true); emit btnClicked(0, 0); } ui->widget1->setVisible(ui->btn1->isChecked()); } void frmPlotBtn::on_btn2_clicked() { //隐藏功能按钮则清除右侧所有选中按钮,用选中不可见的按钮来实现选中互斥 if (!ui->btn2->isChecked()) { ui->btn20->setChecked(true); emit btnClicked(1, 0); } ui->widget2->setVisible(ui->btn2->isChecked()); } void frmPlotBtn::on_btn3_clicked() { //隐藏功能按钮则清除右侧所有选中按钮,用选中不可见的按钮来实现选中互斥 if (!ui->btn3->isChecked()) { ui->btn30->setChecked(true); emit btnClicked(2, 0); } ui->widget3->setVisible(ui->btn3->isChecked()); }