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