9 changed files with 220 additions and 8 deletions
-
3.vscode/settings.json
-
3CMakeLists.txt
-
62libzqt/zui/z_function_list_box.cpp
-
67libzqt/zui/z_function_list_box.hpp
-
0libzqt/zui/z_reg_table_list_box.cpp
-
0libzqt/zui/z_reg_table_list_box.hpp
-
16libzqt/zui/zq_vtab_page.cpp
-
50libzqt/zui/zq_vtab_page.hpp
-
27mainwindow.ui
@ -0,0 +1,62 @@ |
|||||
|
#include "z_function_list_box.hpp"
|
||||
|
|
||||
|
using namespace iflytop; |
||||
|
using namespace std; |
||||
|
ZQFunctionListBox::ZQFunctionListBox(QWidget *parent, const QString &title, int column) : QGroupBox(parent) { //
|
||||
|
|
||||
|
// Box init
|
||||
|
this->setTitle(title); |
||||
|
QGridLayout *layout = new QGridLayout(this); |
||||
|
this->setLayout(layout); |
||||
|
m_layout = layout; |
||||
|
// m_layout->setColumnMinimumWidth(column, 0);
|
||||
|
m_column = column; |
||||
|
|
||||
|
// add QSpacer
|
||||
|
QSpacerItem *verticalSpacer = new QSpacerItem(20, 40, QSizePolicy::Minimum, QSizePolicy::Expanding); |
||||
|
// m_itermNum++;
|
||||
|
m_layout->addItem(verticalSpacer, 0, 0,1,1); |
||||
|
} |
||||
|
|
||||
|
void ZQFunctionListBox::regOnException(function<void(const zexception &e)> onException) { m_onException = onException; } |
||||
|
void ZQFunctionListBox::newFunc(QString zh_name, QStringList params, std::function<void(int argn, const char **args)> onButtonClick) { |
||||
|
int rowcnt = m_layout->rowCount(); |
||||
|
QSizePolicy sizePolicy(QSizePolicy::Minimum, QSizePolicy::Fixed); |
||||
|
sizePolicy.setHorizontalStretch(1); |
||||
|
sizePolicy.setVerticalStretch(0); |
||||
|
|
||||
|
QPushButton *button = new QPushButton(this); |
||||
|
button->setText(zh_name); |
||||
|
button->setMinimumHeight(30); |
||||
|
button->setSizePolicy(sizePolicy); |
||||
|
m_layout->addWidget(button, rowcnt, 0,1,1); |
||||
|
|
||||
|
QList<QLineEdit *> lineEdits; |
||||
|
|
||||
|
for (int i = 0; i < params.size(); i++) { |
||||
|
QLineEdit *lineEdit = new QLineEdit(this); |
||||
|
lineEdit->setMinimumHeight(30); |
||||
|
lineEdit->setSizePolicy(sizePolicy); |
||||
|
lineEdit->setPlaceholderText(params[i]); |
||||
|
lineEdits.push_back(lineEdit); |
||||
|
m_layout->addWidget(lineEdit, rowcnt, i + 1,1,1); |
||||
|
} |
||||
|
|
||||
|
connect(button, &QPushButton::clicked, this, [onButtonClick, lineEdits, this]() { |
||||
|
vector<string> params; |
||||
|
for (int i = 0; i < lineEdits.size(); i++) { |
||||
|
params.push_back(lineEdits[i]->text().toStdString()); |
||||
|
} |
||||
|
char *args[params.size()]; |
||||
|
for (int i = 0; i < params.size(); i++) { |
||||
|
args[i] = (char *)params[i].c_str(); |
||||
|
} |
||||
|
try { |
||||
|
onButtonClick(params.size(), (const char **)args); |
||||
|
} catch (const std::zexception &e) { |
||||
|
if (m_onException) { |
||||
|
m_onException(e); |
||||
|
} |
||||
|
} |
||||
|
}); |
||||
|
} |
@ -0,0 +1,67 @@ |
|||||
|
#pragma once
|
||||
|
|
||||
|
#include <QDateTime>
|
||||
|
#include <QMainWindow>
|
||||
|
#include <QMessageBox>
|
||||
|
#include <QObject>
|
||||
|
#include <QtConcurrent>
|
||||
|
#include <QtCore/QVariant>
|
||||
|
#include <QtSerialPort/QSerialPort>
|
||||
|
#include <QtSerialPort/QSerialPortInfo>
|
||||
|
#include <QtWidgets/QAction>
|
||||
|
#include <QtWidgets/QApplication>
|
||||
|
#include <QtWidgets/QComboBox>
|
||||
|
#include <QtWidgets/QFormLayout>
|
||||
|
#include <QtWidgets/QGridLayout>
|
||||
|
#include <QtWidgets/QGroupBox>
|
||||
|
#include <QtWidgets/QHBoxLayout>
|
||||
|
#include <QtWidgets/QLabel>
|
||||
|
#include <QtWidgets/QLineEdit>
|
||||
|
#include <QtWidgets/QMainWindow>
|
||||
|
#include <QtWidgets/QMenu>
|
||||
|
#include <QtWidgets/QMenuBar>
|
||||
|
#include <QtWidgets/QPushButton>
|
||||
|
#include <QtWidgets/QSpacerItem>
|
||||
|
#include <QtWidgets/QStatusBar>
|
||||
|
#include <QtWidgets/QTabWidget>
|
||||
|
#include <QtWidgets/QTextBrowser>
|
||||
|
#include <QtWidgets/QTextEdit>
|
||||
|
#include <QtWidgets/QVBoxLayout>
|
||||
|
#include <QtWidgets/QWidget>
|
||||
|
//
|
||||
|
#include <functional>
|
||||
|
|
||||
|
#include "../zexception.hpp"
|
||||
|
|
||||
|
namespace iflytop { |
||||
|
using namespace std; |
||||
|
|
||||
|
/**
|
||||
|
* @brief 构造样式如下 |
||||
|
* |
||||
|
* +TAB---------------------------------+ |
||||
|
* |---BOX---------------------------| |
||||
|
* | |Button|Param|Param| | |
||||
|
* | |Button|Param|Param| | |
||||
|
* | |Button|Param|Param| | |
||||
|
* |---------------------------------| |
||||
|
* |
||||
|
*/ |
||||
|
|
||||
|
class ZQFunctionListBox : public QGroupBox { |
||||
|
Q_OBJECT |
||||
|
public: |
||||
|
function<void(const zexception &e)> m_onException; |
||||
|
|
||||
|
private: |
||||
|
QGridLayout *m_layout = nullptr; |
||||
|
int m_itermNum = 0; |
||||
|
int m_column = 1; |
||||
|
|
||||
|
public: |
||||
|
ZQFunctionListBox(QWidget *parent, const QString &title, int column); |
||||
|
|
||||
|
void regOnException(function<void(const zexception &e)> onException); |
||||
|
void newFunc(QString zh_name, QStringList params, std::function<void(int argn, const char **args)> onButtonClick); |
||||
|
}; |
||||
|
} // namespace iflytop
|
@ -0,0 +1,16 @@ |
|||||
|
|
||||
|
#include "zq_vtab_page.hpp"
|
||||
|
|
||||
|
using namespace iflytop; |
||||
|
using namespace std; |
||||
|
|
||||
|
ZQVTabPage::ZQVTabPage(QTabWidget *fathertab, const QString &zh_name) : QWidget(fathertab) { //
|
||||
|
QVBoxLayout *verticalLayout = new QVBoxLayout(this); // 设置布局
|
||||
|
this->setLayout(verticalLayout); |
||||
|
m_layout = verticalLayout; |
||||
|
|
||||
|
fathertab->insertTab(fathertab->count(), this, zh_name); |
||||
|
} |
||||
|
void ZQVTabPage::addBox(QGroupBox *box) { |
||||
|
m_layout->addWidget(box); |
||||
|
} |
@ -0,0 +1,50 @@ |
|||||
|
#pragma once
|
||||
|
|
||||
|
#include <QDateTime>
|
||||
|
#include <QMainWindow>
|
||||
|
#include <QMessageBox>
|
||||
|
#include <QObject>
|
||||
|
#include <QtConcurrent>
|
||||
|
#include <QtCore/QVariant>
|
||||
|
#include <QtSerialPort/QSerialPort>
|
||||
|
#include <QtSerialPort/QSerialPortInfo>
|
||||
|
#include <QtWidgets/QAction>
|
||||
|
#include <QtWidgets/QApplication>
|
||||
|
#include <QtWidgets/QComboBox>
|
||||
|
#include <QtWidgets/QFormLayout>
|
||||
|
#include <QtWidgets/QGridLayout>
|
||||
|
#include <QtWidgets/QGroupBox>
|
||||
|
#include <QtWidgets/QHBoxLayout>
|
||||
|
#include <QtWidgets/QLabel>
|
||||
|
#include <QtWidgets/QLineEdit>
|
||||
|
#include <QtWidgets/QMainWindow>
|
||||
|
#include <QtWidgets/QMenu>
|
||||
|
#include <QtWidgets/QMenuBar>
|
||||
|
#include <QtWidgets/QPushButton>
|
||||
|
#include <QtWidgets/QSpacerItem>
|
||||
|
#include <QtWidgets/QStatusBar>
|
||||
|
#include <QtWidgets/QTabWidget>
|
||||
|
#include <QtWidgets/QTextBrowser>
|
||||
|
#include <QtWidgets/QTextEdit>
|
||||
|
#include <QtWidgets/QVBoxLayout>
|
||||
|
#include <QtWidgets/QWidget>
|
||||
|
//
|
||||
|
#include <functional>
|
||||
|
|
||||
|
#include "../zexception.hpp"
|
||||
|
|
||||
|
|
||||
|
namespace iflytop { |
||||
|
using namespace std; |
||||
|
class ZQVTabPage : public QWidget { |
||||
|
Q_OBJECT |
||||
|
public: |
||||
|
private: |
||||
|
QVBoxLayout *m_layout; |
||||
|
int m_itermNum = 0; |
||||
|
|
||||
|
public: |
||||
|
ZQVTabPage(QTabWidget *fathertab, const QString &zh_name); |
||||
|
void addBox(QGroupBox *box); |
||||
|
}; |
||||
|
} // namespace iflytop
|
Write
Preview
Loading…
Cancel
Save
Reference in new issue