diff options
-rw-r--r-- | examples/EMPTYFILE | 0 | ||||
-rw-r--r-- | examples/examples.pro | 3 | ||||
-rw-r--r-- | examples/terminal/console.cpp | 56 | ||||
-rw-r--r-- | examples/terminal/console.h | 26 | ||||
-rw-r--r-- | examples/terminal/images/clear.png | bin | 0 -> 12543 bytes | |||
-rw-r--r-- | examples/terminal/images/connect.png | bin | 0 -> 15374 bytes | |||
-rw-r--r-- | examples/terminal/images/disconnect.png | bin | 0 -> 15092 bytes | |||
-rw-r--r-- | examples/terminal/images/settings.png | bin | 0 -> 16039 bytes | |||
-rw-r--r-- | examples/terminal/main.cpp | 10 | ||||
-rw-r--r-- | examples/terminal/mainwindow.cpp | 111 | ||||
-rw-r--r-- | examples/terminal/mainwindow.h | 46 | ||||
-rw-r--r-- | examples/terminal/mainwindow.ui | 133 | ||||
-rw-r--r-- | examples/terminal/settingsdialog.cpp | 125 | ||||
-rw-r--r-- | examples/terminal/settingsdialog.h | 51 | ||||
-rw-r--r-- | examples/terminal/settingsdialog.ui | 151 | ||||
-rw-r--r-- | examples/terminal/terminal.pro | 23 | ||||
-rw-r--r-- | examples/terminal/terminal.qrc | 8 | ||||
-rw-r--r-- | serialport.pro | 2 |
18 files changed, 744 insertions, 1 deletions
diff --git a/examples/EMPTYFILE b/examples/EMPTYFILE deleted file mode 100644 index e69de29b..00000000 --- a/examples/EMPTYFILE +++ /dev/null diff --git a/examples/examples.pro b/examples/examples.pro new file mode 100644 index 00000000..9a207e52 --- /dev/null +++ b/examples/examples.pro @@ -0,0 +1,3 @@ +TEMPLATE = subdirs +CONFIG += ordered +SUBDIRS = terminal diff --git a/examples/terminal/console.cpp b/examples/terminal/console.cpp new file mode 100644 index 00000000..a813687b --- /dev/null +++ b/examples/terminal/console.cpp @@ -0,0 +1,56 @@ +#include "console.h" + +#include <QtWidgets/QScrollBar> + +#include <QtCore/QDebug> + +Console::Console(QWidget *parent) : + QPlainTextEdit(parent) +{ + document()->setMaximumBlockCount(100); + QPalette p = palette(); + p.setColor(QPalette::Base, Qt::black); + p.setColor(QPalette::Text, Qt::green); + setPalette(p); + +} + +void Console::putData(const QByteArray &data) +{ + insertPlainText(QString(data)); + + QScrollBar *bar = verticalScrollBar(); + bar->setValue(bar->maximum()); +} + +void Console::keyPressEvent(QKeyEvent *e) +{ + switch (e->key()) { + case Qt::Key_Backspace: + case Qt::Key_Left: + case Qt::Key_Right: + case Qt::Key_Up: + case Qt::Key_Down: + // skip processing + break; + default: + QPlainTextEdit::keyPressEvent(e); + emit getData(e->text().toLocal8Bit()); + } +} + +void Console::mousePressEvent(QMouseEvent *e) +{ + Q_UNUSED(e) + setFocus(); +} + +void Console::mouseDoubleClickEvent(QMouseEvent *e) +{ + Q_UNUSED(e) +} + +void Console::contextMenuEvent(QContextMenuEvent *e) +{ + Q_UNUSED(e) +} diff --git a/examples/terminal/console.h b/examples/terminal/console.h new file mode 100644 index 00000000..92100b1a --- /dev/null +++ b/examples/terminal/console.h @@ -0,0 +1,26 @@ +#ifndef CONSOLE_H +#define CONSOLE_H + +#include <QtWidgets/QPlainTextEdit> + +class Console : public QPlainTextEdit +{ + Q_OBJECT + +signals: + void getData(const QByteArray &data); + +public: + explicit Console(QWidget *parent = 0); + + void putData(const QByteArray &data); + +protected: + virtual void keyPressEvent(QKeyEvent *e); + virtual void mousePressEvent(QMouseEvent *e); + virtual void mouseDoubleClickEvent(QMouseEvent *e); + virtual void contextMenuEvent(QContextMenuEvent *e); + +}; + +#endif // CONSOLE_H diff --git a/examples/terminal/images/clear.png b/examples/terminal/images/clear.png Binary files differnew file mode 100644 index 00000000..aa612f1f --- /dev/null +++ b/examples/terminal/images/clear.png diff --git a/examples/terminal/images/connect.png b/examples/terminal/images/connect.png Binary files differnew file mode 100644 index 00000000..dd5a51e9 --- /dev/null +++ b/examples/terminal/images/connect.png diff --git a/examples/terminal/images/disconnect.png b/examples/terminal/images/disconnect.png Binary files differnew file mode 100644 index 00000000..fd58f7a4 --- /dev/null +++ b/examples/terminal/images/disconnect.png diff --git a/examples/terminal/images/settings.png b/examples/terminal/images/settings.png Binary files differnew file mode 100644 index 00000000..3d1042e2 --- /dev/null +++ b/examples/terminal/images/settings.png diff --git a/examples/terminal/main.cpp b/examples/terminal/main.cpp new file mode 100644 index 00000000..bf5d1f94 --- /dev/null +++ b/examples/terminal/main.cpp @@ -0,0 +1,10 @@ +#include <QtWidgets/QApplication> +#include "mainwindow.h" + +int main(int argc, char *argv[]) +{ + QApplication a(argc, argv); + MainWindow w; + w.show(); + return a.exec(); +} diff --git a/examples/terminal/mainwindow.cpp b/examples/terminal/mainwindow.cpp new file mode 100644 index 00000000..0de3ace0 --- /dev/null +++ b/examples/terminal/mainwindow.cpp @@ -0,0 +1,111 @@ +#include "mainwindow.h" +#include "ui_mainwindow.h" +#include "console.h" +#include "settingsdialog.h" + +#include <QtWidgets/QMessageBox> +#include <QtAddOnSerialPort/serialport.h> + +MainWindow::MainWindow(QWidget *parent) : + QMainWindow(parent), + ui(new Ui::MainWindow) +{ + ui->setupUi(this); + console = new Console; + console->setEnabled(false); + setCentralWidget(console); + + serial = new SerialPort(this); + settings = new SettingsDialog; + + ui->actionConnect->setEnabled(true); + ui->actionDisconnect->setEnabled(false); + ui->actionConfigure->setEnabled(true); + + initActionsConnections(); + + connect(serial, SIGNAL(readyRead()), this, SLOT(readData())); + connect(console, SIGNAL(getData(QByteArray)), this, SLOT(writeData(QByteArray))); +} + +MainWindow::~MainWindow() +{ + delete settings; + delete ui; +} + +void MainWindow::open() +{ + SettingsDialog::Settings p = settings->settings(); + serial->setPort(p.name); + if (serial->open(QIODevice::ReadWrite)) { + if (serial->setRate(p.rate) + && serial->setDataBits(p.dataBits) + && serial->setParity(p.parity) + && serial->setStopBits(p.stopBits) + && serial->setFlowControl(p.flowcontrol)) { + + console->setEnabled(true); + ui->actionConnect->setEnabled(false); + ui->actionDisconnect->setEnabled(true); + ui->actionConfigure->setEnabled(false); + ui->statusBar->showMessage(tr("Connected to %1 : %2, %3, %4, %5, %6") + .arg(p.name).arg(p.stringRate).arg(p.stringDataBits) + .arg(p.stringParity).arg(p.stringStopBits).arg(p.stringFlowControl)); + + } else { + QMessageBox::critical(this, tr("Error"), + tr("Can't configure the serial port: %1,\n" + "error code: %2") + .arg(p.name).arg(serial->error())); + + ui->statusBar->showMessage(tr("Open error")); + } + } else { + QMessageBox::critical(this, tr("Error"), + tr("Can't opened the serial port: %1,\n" + "error code: %2") + .arg(p.name).arg(serial->error())); + + ui->statusBar->showMessage(tr("Configure error")); + } +} + +void MainWindow::close() +{ + serial->close(); + console->setEnabled(false); + ui->actionConnect->setEnabled(true); + ui->actionDisconnect->setEnabled(false); + ui->actionConfigure->setEnabled(true); + ui->statusBar->showMessage(tr("Disconnected")); +} + +void MainWindow::about() +{ + QMessageBox::about(this, tr("About Simple Terminal"), + tr("The <b>Simple Terminal</b> example demonstrates how to " + "use the QtSerialPort module in modern GUI applications " + "using Qt, with a menu bar, toolbars, and a status bar.")); +} + +void MainWindow::writeData(const QByteArray &data) +{ + serial->write(data); +} + +void MainWindow::readData() +{ + QByteArray data = serial->readAll(); + console->putData(data); +} + +void MainWindow::initActionsConnections() +{ + connect(ui->actionConnect, SIGNAL(triggered()), this, SLOT(open())); + connect(ui->actionDisconnect, SIGNAL(triggered()), this, SLOT(close())); + connect(ui->actionConfigure, SIGNAL(triggered()), settings, SLOT(show())); + connect(ui->actionClear, SIGNAL(triggered()), console, SLOT(clear())); + connect(ui->actionAbout, SIGNAL(triggered()), this, SLOT(about())); + connect(ui->actionAboutQt, SIGNAL(triggered()), qApp, SLOT(aboutQt())); +} diff --git a/examples/terminal/mainwindow.h b/examples/terminal/mainwindow.h new file mode 100644 index 00000000..29ed8327 --- /dev/null +++ b/examples/terminal/mainwindow.h @@ -0,0 +1,46 @@ +#ifndef MAINWINDOW_H +#define MAINWINDOW_H + +#include <QtWidgets/QMainWindow> + +#include <QtAddOnSerialPort/serialport-global.h> + +namespace Ui { +class MainWindow; +} + +class Console; +class SettingsDialog; + +QT_BEGIN_NAMESPACE_SERIALPORT +class SerialPort; +QT_END_NAMESPACE_SERIALPORT + +QT_USE_NAMESPACE_SERIALPORT + +class MainWindow : public QMainWindow +{ + Q_OBJECT + +public: + explicit MainWindow(QWidget *parent = 0); + ~MainWindow(); + +private slots: + void open(); + void close(); + void about(); + void writeData(const QByteArray &data); + void readData(); + +private: + void initActionsConnections(); + +private: + Ui::MainWindow *ui; + Console *console; + SettingsDialog *settings; + SerialPort *serial; +}; + +#endif // MAINWINDOW_H diff --git a/examples/terminal/mainwindow.ui b/examples/terminal/mainwindow.ui new file mode 100644 index 00000000..7e65b419 --- /dev/null +++ b/examples/terminal/mainwindow.ui @@ -0,0 +1,133 @@ +<?xml version="1.0" encoding="UTF-8"?> +<ui version="4.0"> + <class>MainWindow</class> + <widget class="QMainWindow" name="MainWindow"> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>400</width> + <height>300</height> + </rect> + </property> + <property name="windowTitle"> + <string>Simple Terminal</string> + </property> + <widget class="QWidget" name="centralWidget"> + <layout class="QVBoxLayout" name="verticalLayout"/> + </widget> + <widget class="QMenuBar" name="menuBar"> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>400</width> + <height>19</height> + </rect> + </property> + <widget class="QMenu" name="menuCalls"> + <property name="title"> + <string>Calls</string> + </property> + <addaction name="actionConnect"/> + <addaction name="actionDisconnect"/> + </widget> + <widget class="QMenu" name="menuTools"> + <property name="title"> + <string>Tools</string> + </property> + <addaction name="actionConfigure"/> + <addaction name="actionClear"/> + </widget> + <widget class="QMenu" name="menuHelp"> + <property name="title"> + <string>Help</string> + </property> + <addaction name="actionAbout"/> + <addaction name="actionAboutQt"/> + </widget> + <addaction name="menuCalls"/> + <addaction name="menuTools"/> + <addaction name="menuHelp"/> + </widget> + <widget class="QToolBar" name="mainToolBar"> + <attribute name="toolBarArea"> + <enum>TopToolBarArea</enum> + </attribute> + <attribute name="toolBarBreak"> + <bool>false</bool> + </attribute> + <addaction name="actionConnect"/> + <addaction name="actionDisconnect"/> + <addaction name="actionConfigure"/> + <addaction name="actionClear"/> + </widget> + <widget class="QStatusBar" name="statusBar"/> + <action name="actionAbout"> + <property name="text"> + <string>About</string> + </property> + <property name="toolTip"> + <string>About program</string> + </property> + </action> + <action name="actionAboutQt"> + <property name="text"> + <string>About Qt</string> + </property> + </action> + <action name="actionConnect"> + <property name="icon"> + <iconset resource="terminal.qrc"> + <normaloff>:/images/connect.png</normaloff>:/images/connect.png</iconset> + </property> + <property name="text"> + <string>Connect</string> + </property> + <property name="toolTip"> + <string>Connect to serial port</string> + </property> + </action> + <action name="actionDisconnect"> + <property name="icon"> + <iconset resource="terminal.qrc"> + <normaloff>:/images/disconnect.png</normaloff>:/images/disconnect.png</iconset> + </property> + <property name="text"> + <string>Disconnect</string> + </property> + <property name="toolTip"> + <string>Disconnect from serial port</string> + </property> + </action> + <action name="actionConfigure"> + <property name="icon"> + <iconset resource="terminal.qrc"> + <normaloff>:/images/settings.png</normaloff>:/images/settings.png</iconset> + </property> + <property name="text"> + <string>Configure</string> + </property> + <property name="toolTip"> + <string>Configure serial port</string> + </property> + </action> + <action name="actionClear"> + <property name="icon"> + <iconset resource="terminal.qrc"> + <normaloff>:/images/clear.png</normaloff>:/images/clear.png</iconset> + </property> + <property name="text"> + <string>Clear</string> + </property> + <property name="toolTip"> + <string>Clear data</string> + </property> + </action> + </widget> + <layoutdefault spacing="6" margin="11"/> + <resources> + <include location="terminal.qrc"/> + </resources> + <connections/> +</ui> diff --git a/examples/terminal/settingsdialog.cpp b/examples/terminal/settingsdialog.cpp new file mode 100644 index 00000000..08529d87 --- /dev/null +++ b/examples/terminal/settingsdialog.cpp @@ -0,0 +1,125 @@ +#include "settingsdialog.h" +#include "ui_settingsdialog.h" + +#include <QtAddOnSerialPort/serialportinfo.h> + +SettingsDialog::SettingsDialog(QWidget *parent) : + QDialog(parent), + ui(new Ui::SettingsDialog) +{ + ui->setupUi(this); + + connect(ui->applyButton, SIGNAL(clicked()), + this, SLOT(apply())); + connect(ui->portsBox, SIGNAL(currentIndexChanged(int)), + this, SLOT(showPortInfo(int))); + + fillPortsParameters(); + fillPortsInfo(); + + updateSettings(); +} + +SettingsDialog::~SettingsDialog() +{ + delete ui; +} + +SettingsDialog::Settings SettingsDialog::settings() const +{ + return currentSettings; +} + +void SettingsDialog::showPortInfo(int idx) +{ + if (idx != -1) { + QStringList list = ui->portsBox->itemData(idx).toStringList(); + ui->descriptionLabel->setText(tr("Description: %1").arg(list.at(1))); + ui->manufacturerLabel->setText(tr("Manufacturer: %1").arg(list.at(2))); + ui->locationLabel->setText(tr("Location: %1").arg(list.at(3))); + } +} + +void SettingsDialog::apply() +{ + updateSettings(); + hide(); +} + +void SettingsDialog::fillPortsParameters() +{ + // fill baud rate (is not the entire list of available values, + // desired values??, add your independently) + ui->rateBox->addItem(QLatin1String("9600"), 9600); + ui->rateBox->addItem(QLatin1String("19200"), 19200); + ui->rateBox->addItem(QLatin1String("38400"), 38400); + ui->rateBox->addItem(QLatin1String("115200"), 115200); + ui->rateBox->addItem(QLatin1String("115200"), 115200); + + // fill data bits + ui->dataBitsBox->addItem(QLatin1String("5"), static_cast<int>(SerialPort::Data5)); + ui->dataBitsBox->addItem(QLatin1String("6"), static_cast<int>(SerialPort::Data6)); + ui->dataBitsBox->addItem(QLatin1String("7"), static_cast<int>(SerialPort::Data7)); + ui->dataBitsBox->addItem(QLatin1String("8"), static_cast<int>(SerialPort::Data8)); + + // fill parity + ui->parityBox->addItem(QLatin1String("None"), static_cast<int>(SerialPort::NoParity)); + ui->parityBox->addItem(QLatin1String("Even"), static_cast<int>(SerialPort::EvenParity)); + ui->parityBox->addItem(QLatin1String("Odd"), static_cast<int>(SerialPort::OddParity)); + ui->parityBox->addItem(QLatin1String("Mark"), static_cast<int>(SerialPort::MarkParity)); + ui->parityBox->addItem(QLatin1String("Space"), static_cast<int>(SerialPort::SpaceParity)); + + // fill stop bits + ui->stopBitsBox->addItem(QLatin1String("1"), static_cast<int>(SerialPort::OneStop)); +#if defined (Q_OS_WIN) + ui->stopBitsBox->addItem(QLatin1String("1.5"), static_cast<int>(SerialPort::OneAndHalfStop)); +#endif + ui->stopBitsBox->addItem(QLatin1String("2"), static_cast<int>(SerialPort::TwoStop)); + + // fill flow control + ui->flowControlBox->addItem(QLatin1String("None"), static_cast<int>(SerialPort::NoFlowControl)); + ui->flowControlBox->addItem(QLatin1String("RTS/CTS"), static_cast<int>(SerialPort::HardwareControl)); + ui->flowControlBox->addItem(QLatin1String("XON/XOFF"), static_cast<int>(SerialPort::SoftwareControl)); +} + +void SettingsDialog::fillPortsInfo() +{ + ui->portsBox->clear(); + foreach (const SerialPortInfo &info, SerialPortInfo::availablePorts()) { + QStringList list; + list << info.portName() << info.description() + << info.manufacturer() << info.systemLocation(); + + ui->portsBox->addItem(list.at(0), list); + } +} + +void SettingsDialog::updateSettings() +{ + currentSettings.name = ui->portsBox->currentText(); + + // Rate + currentSettings.rate = static_cast<SerialPort::Rate>( + ui->rateBox->itemData(ui->rateBox->currentIndex()).toInt()); + currentSettings.stringRate = QString::number(currentSettings.rate); + + // Data bits + currentSettings.dataBits = static_cast<SerialPort::DataBits>( + ui->dataBitsBox->itemData(ui->dataBitsBox->currentIndex()).toInt()); + currentSettings.stringDataBits = ui->dataBitsBox->currentText(); + + // Parity + currentSettings.parity = static_cast<SerialPort::Parity>( + ui->parityBox->itemData(ui->parityBox->currentIndex()).toInt()); + currentSettings.stringParity = ui->parityBox->currentText(); + + // Stop bits + currentSettings.stopBits = static_cast<SerialPort::StopBits>( + ui->stopBitsBox->itemData(ui->stopBitsBox->currentIndex()).toInt()); + currentSettings.stringStopBits = ui->stopBitsBox->currentText(); + + // Flow control + currentSettings.flowcontrol = static_cast<SerialPort::FlowControl>( + ui->flowControlBox->itemData(ui->flowControlBox->currentIndex()).toInt()); + currentSettings.stringFlowControl = ui->flowControlBox->currentText(); +} diff --git a/examples/terminal/settingsdialog.h b/examples/terminal/settingsdialog.h new file mode 100644 index 00000000..2134f5d1 --- /dev/null +++ b/examples/terminal/settingsdialog.h @@ -0,0 +1,51 @@ +#ifndef SETTINGSDIALOG_H +#define SETTINGSDIALOG_H + +#include <QtWidgets/QDialog> +#include <QtAddOnSerialPort/serialport.h> + +namespace Ui { +class SettingsDialog; +} + +QT_USE_NAMESPACE_SERIALPORT + +class SettingsDialog : public QDialog +{ + Q_OBJECT + +public: + struct Settings { + QString name; + qint32 rate; + QString stringRate; + SerialPort::DataBits dataBits; + QString stringDataBits; + SerialPort::Parity parity; + QString stringParity; + SerialPort::StopBits stopBits; + QString stringStopBits; + SerialPort::FlowControl flowcontrol; + QString stringFlowControl; + }; + + explicit SettingsDialog(QWidget *parent = 0); + ~SettingsDialog(); + + Settings settings() const; + +private slots: + void showPortInfo(int idx); + void apply(); + +private: + void fillPortsParameters(); + void fillPortsInfo(); + void updateSettings(); + +private: + Ui::SettingsDialog *ui; + Settings currentSettings; +}; + +#endif // SETTINGSDIALOG_H diff --git a/examples/terminal/settingsdialog.ui b/examples/terminal/settingsdialog.ui new file mode 100644 index 00000000..d88f2ea7 --- /dev/null +++ b/examples/terminal/settingsdialog.ui @@ -0,0 +1,151 @@ +<?xml version="1.0" encoding="UTF-8"?> +<ui version="4.0"> + <class>SettingsDialog</class> + <widget class="QDialog" name="SettingsDialog"> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>280</width> + <height>206</height> + </rect> + </property> + <property name="windowTitle"> + <string>Settings</string> + </property> + <layout class="QGridLayout" name="gridLayout_3"> + <item row="0" column="0"> + <widget class="QGroupBox" name="selectBox"> + <property name="title"> + <string>Select Serial Port</string> + </property> + <layout class="QGridLayout" name="gridLayout"> + <item row="0" column="0"> + <widget class="QComboBox" name="portsBox"/> + </item> + <item row="1" column="0"> + <widget class="QLabel" name="descriptionLabel"> + <property name="text"> + <string>Description:</string> + </property> + </widget> + </item> + <item row="2" column="0"> + <widget class="QLabel" name="manufacturerLabel"> + <property name="text"> + <string>Manufacturer:</string> + </property> + </widget> + </item> + <item row="3" column="0"> + <widget class="QLabel" name="locationLabel"> + <property name="text"> + <string>Location:</string> + </property> + </widget> + </item> + <item row="4" column="0"> + <widget class="QLabel" name="vidLabel"> + <property name="text"> + <string>Vid:</string> + </property> + </widget> + </item> + <item row="5" column="0"> + <widget class="QLabel" name="pidLabel"> + <property name="text"> + <string>Pid:</string> + </property> + </widget> + </item> + </layout> + </widget> + </item> + <item row="0" column="1"> + <widget class="QGroupBox" name="parametersBox"> + <property name="title"> + <string>Select Parameters</string> + </property> + <layout class="QGridLayout" name="gridLayout_2"> + <item row="0" column="0"> + <widget class="QLabel" name="rateLabel"> + <property name="text"> + <string>Rate:</string> + </property> + </widget> + </item> + <item row="0" column="1"> + <widget class="QComboBox" name="rateBox"/> + </item> + <item row="1" column="0"> + <widget class="QLabel" name="dataBitsLabel"> + <property name="text"> + <string>Data bits:</string> + </property> + </widget> + </item> + <item row="1" column="1"> + <widget class="QComboBox" name="dataBitsBox"/> + </item> + <item row="2" column="0"> + <widget class="QLabel" name="parityLabel"> + <property name="text"> + <string>Parity:</string> + </property> + </widget> + </item> + <item row="2" column="1"> + <widget class="QComboBox" name="parityBox"/> + </item> + <item row="3" column="0"> + <widget class="QLabel" name="stopBitsLabel"> + <property name="text"> + <string>Stop bits:</string> + </property> + </widget> + </item> + <item row="3" column="1"> + <widget class="QComboBox" name="stopBitsBox"/> + </item> + <item row="4" column="0"> + <widget class="QLabel" name="flowControlLabel"> + <property name="text"> + <string>Flow control:</string> + </property> + </widget> + </item> + <item row="4" column="1"> + <widget class="QComboBox" name="flowControlBox"/> + </item> + </layout> + </widget> + </item> + <item row="1" column="0" colspan="2"> + <layout class="QHBoxLayout" name="horizontalLayout"> + <item> + <spacer name="horizontalSpacer"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>96</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + <item> + <widget class="QPushButton" name="applyButton"> + <property name="text"> + <string>Apply</string> + </property> + </widget> + </item> + </layout> + </item> + </layout> + </widget> + <resources/> + <connections/> +</ui> diff --git a/examples/terminal/terminal.pro b/examples/terminal/terminal.pro new file mode 100644 index 00000000..8660b80d --- /dev/null +++ b/examples/terminal/terminal.pro @@ -0,0 +1,23 @@ +QT += widgets serialport + +TARGET = terminal +TEMPLATE = app + + +SOURCES += \ + main.cpp \ + mainwindow.cpp \ + settingsdialog.cpp \ + console.cpp + +HEADERS += \ + mainwindow.h \ + settingsdialog.h \ + console.h + +FORMS += \ + mainwindow.ui \ + settingsdialog.ui + +RESOURCES += \ + terminal.qrc diff --git a/examples/terminal/terminal.qrc b/examples/terminal/terminal.qrc new file mode 100644 index 00000000..5ca35d4b --- /dev/null +++ b/examples/terminal/terminal.qrc @@ -0,0 +1,8 @@ +<RCC> + <qresource prefix="/"> + <file>images/connect.png</file> + <file>images/disconnect.png</file> + <file>images/settings.png</file> + <file>images/clear.png</file> + </qresource> +</RCC> diff --git a/serialport.pro b/serialport.pro index dcb9b529..b4adf06f 100644 --- a/serialport.pro +++ b/serialport.pro @@ -1,4 +1,4 @@ TEMPLATE = subdirs -SUBDIRS = src #tests +SUBDIRS = src examples #tests CONFIG += ordered include(doc/doc.pri) |