diff --git a/mainwindow.cpp b/mainwindow.cpp --- a/mainwindow.cpp +++ b/mainwindow.cpp @@ -48,6 +48,7 @@ MainWindow::MainWindow(QWidget *parent) ui->setupUi(this); ui->tabWidget->insertTab(0, &portControl, "Port"); ui->tabWidget->setCurrentIndex(0); + addToolBar(portControl.toolBar()); setupAboutDialog(); diff --git a/portcontrol.cpp b/portcontrol.cpp --- a/portcontrol.cpp +++ b/portcontrol.cpp @@ -26,12 +26,21 @@ PortControl::PortControl(QSerialPort* port, QWidget* parent) : QWidget(parent), - ui(new Ui::PortControl) + ui(new Ui::PortControl), + portToolBar("Port"), + openAction("Open", this) { ui->setupUi(this); serialPort = port; + // setup the toolbar + openAction.setCheckable(true); + QObject::connect(&openAction, &QAction::triggered, + this, &PortControl::openActionTriggered); + portToolBar.addAction(&openAction); + + // setup buttons QObject::connect(ui->pbReloadPorts, &QPushButton::clicked, this, &PortControl::loadPortList); @@ -240,6 +249,7 @@ void PortControl::togglePort() } } ui->pbOpenPort->setChecked(serialPort->isOpen()); + openAction.setChecked(serialPort->isOpen()); } void PortControl::selectPort(QString portName) @@ -282,3 +292,13 @@ void PortControl::onPortNameChanged(QStr { keepPortName(portName); } + +QToolBar* PortControl::toolBar() +{ + return &portToolBar; +} + +void PortControl::openActionTriggered(bool checked) +{ + togglePort(); +} diff --git a/portcontrol.h b/portcontrol.h --- a/portcontrol.h +++ b/portcontrol.h @@ -24,6 +24,8 @@ #include #include #include +#include +#include namespace Ui { class PortControl; @@ -39,6 +41,8 @@ public: QSerialPort* serialPort; + QToolBar* toolBar(); + private: Ui::PortControl *ui; @@ -47,6 +51,9 @@ private: QButtonGroup stopBitsButtons; QButtonGroup flowControlButtons; + QToolBar portToolBar; + QAction openAction; + QStringList discoveredPorts; // list of port names returned by availablePorts QStringList userEnteredPorts; // list of port names entered by user void keepPortName(QString portName); // if it's not already in userEn. or discv. list @@ -66,6 +73,7 @@ public slots: private slots: void onPortNameChanged(QString portName); + void openActionTriggered(bool checked); signals: void skipByteRequested();