还是一堆bug的状态

This commit is contained in:
2026-08-01 20:09:46 +08:00
parent 28b33fb820
commit 6ea03829bc
30 changed files with 84 additions and 2664 deletions
+15 -19
View File
@@ -10,8 +10,7 @@
#include <memory_resource>
#include <utility>
#include <vector>
#include "../../../third_party/Renderive/Widget/base/Generate_Mock_Data.h"
#include "../../../third_party/Renderive/Renderive/base/Memory.h"
#include "Renderive/export.h"
namespace {
struct Mock_Config {
bool performance{};
@@ -43,6 +42,10 @@ double make_random_value(renderive::Range range) {
std::swap(range.origin, range.target);
return renderive::get_data(range);
}
renderive::Time_Of_Day current_render_time() {
const QTime now = QTime::currentTime();
return {now.isValid() ? now.msecsSinceStartOfDay() : -1};
}
void push_radio_data(Radio_Widget* rw) {
if (!rw || !rw->spectrogram_line || !rw->water_fall || !rw->time_power || !rw->audio_spectrogram_plot || !rw->progress_bar1 || !rw->progress_bar2)
return;
@@ -55,12 +58,12 @@ void push_radio_data(Radio_Widget* rw) {
rw->progress_bar1->setValue(middle_power);
}
{
rw->water_fall->give_data(QTime::currentTime(), make_random_data(rw->water_fall->power_range(), rw->water_fall->frequency_point_size(), renderive::Memory_Domain::Waterfall));
rw->water_fall->give_data(current_render_time(), make_random_data(rw->water_fall->power_range(), rw->water_fall->frequency_point_size(), renderive::Memory_Domain::Waterfall));
}
{
renderive::Range r = rw->time_power->value_axis()->coord_range();
renderive::Range nr = {r.middle() - r.length() / 4, r.middle() + r.length() / 4};
rw->time_power->give_data(QTime::currentTime(), make_random_value(nr));
rw->time_power->give_data(current_render_time(), make_random_value(nr));
}
{
auto r = rw->audio_spectrogram_plot->power_axis()->coord_range();
@@ -80,10 +83,10 @@ void push_radio_data_perf(Radio_Widget* rw) {
rw->progress_bar1->setValue(middle_power);
}
{
rw->water_fall->give_data(QTime::currentTime(), make_random_data({0, 160}, 1024, renderive::Memory_Domain::Waterfall));
rw->water_fall->give_data(current_render_time(), make_random_data({0, 160}, 1024, renderive::Memory_Domain::Waterfall));
}
{
rw->time_power->give_data(QTime::currentTime(), make_random_value({-6000, 6000}));
rw->time_power->give_data(current_render_time(), make_random_value({-6000, 6000}));
}
{
rw->audio_spectrogram_plot->give_data(make_random_data({-6000, 6000}, 512, renderive::Memory_Domain::Spectrum));
@@ -156,20 +159,13 @@ Back_End::Back_End() {
QTimer::singleShot(0, this, [this, config]() {
Radio_Widget* rw = Main_Widget::instance()->radio_widget;
if (config.performance) {
mock_thread = new QThread(this);
auto worker = new QObject;
worker->moveToThread(mock_thread);
QObject::connect(mock_thread, &QThread::finished, worker, &QObject::deleteLater);
QObject::connect(mock_thread, &QThread::started, worker, [worker, config, rw]() {
auto timer = new QTimer(worker);
timer->setTimerType(Qt::PreciseTimer);
QObject::connect(timer, &QTimer::timeout, worker, [config, rw]() {
for (int i = 0; i < config.batch_count; ++i)
push_radio_data_perf(rw);
});
timer->start(config.interval_ms);
auto timer = new QTimer(this);
timer->setTimerType(Qt::PreciseTimer);
QObject::connect(timer, &QTimer::timeout, this, [config, rw]() {
for (int i = 0; i < config.batch_count; ++i)
push_radio_data_perf(rw);
});
mock_thread->start();
timer->start(config.interval_ms);
return;
}
auto timer = new QTimer(this);
@@ -11,7 +11,7 @@
#include "../BaseWidget.h"
#include "../menu/BaseWidgetMenu.h"
#include "../BackEnd/MainWidget.h"
#include "../../../third_party/Renderive/Demo_Gallery/base/Tool.h"
#include "Demo_Gallery/base/export.h"
static renderive::Range frequent_range = {-12000, 12000};
static double max = 160;
QWidget* Intermediate_Frequency_Widget::create_spectrogram_power_plot() {
@@ -31,13 +31,13 @@ QWidget* Intermediate_Frequency_Widget::create_spectrogram_power_plot() {
auto overlay = create_renderable_node(get_root_renderable(), "Overlay_Renderable");
frequency_axis_cache->set_cache_mode(renderive::Renderable_Cache_Mode::Local_Pixel);
power_axis_cache->set_cache_mode(renderive::Renderable_Cache_Mode::Local_Pixel);
x_axis = renderive::Frequency_Axis::Builder(frequency_axis_cache, Qt::Horizontal)
x_axis = renderive::Frequency_Axis::Builder(frequency_axis_cache, renderive::Orientation::Horizontal)
.set_tick_length(-10)
.set_coord_range(frequent_range)
.set_tick_length(-10)
.set_sub_tick_length(-5)
.build();
y_axis = renderive::Axis::Builder(power_axis_cache, Qt::Vertical)
y_axis = renderive::Axis::Builder(power_axis_cache, renderive::Orientation::Vertical)
.set_coord_range({160, 0})
.set_unit_text("功率")
.build();
@@ -98,13 +98,13 @@ QWidget* Intermediate_Frequency_Widget::create_Afterglow_Plot() {
auto overlay = create_renderable_node(get_root_renderable(), "Overlay_Renderable");
frequency_axis_cache->set_cache_mode(renderive::Renderable_Cache_Mode::Local_Pixel);
power_axis_cache->set_cache_mode(renderive::Renderable_Cache_Mode::Local_Pixel);
x_axis = renderive::Frequency_Axis::Builder(frequency_axis_cache, Qt::Horizontal)
x_axis = renderive::Frequency_Axis::Builder(frequency_axis_cache, renderive::Orientation::Horizontal)
.set_coord_range(frequent_range)
.set_tick_length(-10)
.set_sub_tick_length(-5)
.set_use_drag(true)
.build();
y_axis = renderive::Axis::Builder(power_axis_cache, Qt::Vertical)
y_axis = renderive::Axis::Builder(power_axis_cache, renderive::Orientation::Vertical)
.set_coord_range({160, 0})
.set_use_drag(true)
.build();
+9 -9
View File
@@ -8,7 +8,7 @@
#include "../menu/BaseWidgetMenu.h"
#include "BackEnd.h"
#include "../BackEnd/MainWidget.h"
#include "../../../third_party/Renderive/Demo_Gallery/base/Tool.h"
#include "Demo_Gallery/base/export.h"
static bool use_Performance_shower = false;
static double max = 160;
static renderive::Range frequent_range = {-12000, 12000};
@@ -47,11 +47,11 @@ QWidget* Radio_Widget::create_spectrogram_power_plot() {
auto axis_cache = create_renderable_node(get_root_renderable(), "Power_Axis_Cache");
axis_cache->set_cache_mode(renderive::Renderable_Cache_Mode::Local_Pixel);
auto overlay = create_renderable_node(get_root_renderable(), "Overlay_Renderable");
x_axis = renderive::Frequency_Axis::Builder(axis_cache, Qt::Horizontal)
x_axis = renderive::Frequency_Axis::Builder(axis_cache, renderive::Orientation::Horizontal)
.set_coord_range(frequent_range)
.set_tick_length(-10)
.build();
y_axis = renderive::Axis::Builder(axis_cache, Qt::Vertical)
y_axis = renderive::Axis::Builder(axis_cache, renderive::Orientation::Vertical)
.set_coord_range({max, 0})
.set_unit_text("功率")
.build();
@@ -115,12 +115,12 @@ QWidget* Radio_Widget::create_water_fall_plot() {
auto overlay = create_renderable_node(get_root_renderable(), "Overlay_Renderable");
stream_cache->set_cache_mode(renderive::Renderable_Cache_Mode::Local_Pixel);
frequency_axis_cache->set_cache_mode(renderive::Renderable_Cache_Mode::Local_Pixel);
x_axis = renderive::Frequency_Axis::Builder(frequency_axis_cache, Qt::Horizontal)
x_axis = renderive::Frequency_Axis::Builder(frequency_axis_cache, renderive::Orientation::Horizontal)
.set_tick_length(-10)
.set_sub_tick_length(-5)
.set_coord_range(frequent_range)
.build();
y_axis = renderive::Time_Axis::Builder(time_axis, Qt::Vertical)
y_axis = renderive::Time_Axis::Builder(time_axis, renderive::Orientation::Vertical)
.set_time_point_size(100)
.build();
wf = renderive::Waterfall::Builder(data, x_axis, y_axis)
@@ -174,12 +174,12 @@ QWidget* Radio_Widget::create_audio_spectrogram_plot() {
auto overlay = create_renderable_node(get_root_renderable(), "Overlay_Renderable");
frequency_axis_cache->set_cache_mode(renderive::Renderable_Cache_Mode::Local_Pixel);
power_axis_cache->set_cache_mode(renderive::Renderable_Cache_Mode::Local_Pixel);
x_axis = renderive::Frequency_Axis::Builder(frequency_axis_cache, Qt::Horizontal)
x_axis = renderive::Frequency_Axis::Builder(frequency_axis_cache, renderive::Orientation::Horizontal)
.set_coord_range({-12000, 12000})
.set_tick_length(-10)
.set_sub_tick_length(-5)
.build();
y_axis = renderive::Axis::Builder(power_axis_cache, Qt::Vertical)
y_axis = renderive::Axis::Builder(power_axis_cache, renderive::Orientation::Vertical)
.set_coord_range({12000, -12000})
.set_unit_text("功率").build();
sp = renderive::Spectrum::Builder(data, x_axis, y_axis)
@@ -233,11 +233,11 @@ QWidget* Radio_Widget::create_time_power_plot() {
auto overlay = create_renderable_node(get_root_renderable(), "Overlay_Renderable");
stream_cache->set_cache_mode(renderive::Renderable_Cache_Mode::Local_Pixel);
power_axis_cache->set_cache_mode(renderive::Renderable_Cache_Mode::Local_Pixel);
x_axis = renderive::Time_Axis::Builder(time_axis, Qt::Horizontal)
x_axis = renderive::Time_Axis::Builder(time_axis, renderive::Orientation::Horizontal)
.set_tick_length(-10)
.set_sub_tick_length(-5)
.build();
y_axis = renderive::Axis::Builder(power_axis_cache, Qt::Vertical)
y_axis = renderive::Axis::Builder(power_axis_cache, renderive::Orientation::Vertical)
.set_coord_range({12000, -12000})
.build();
audio = renderive::Audio_Frequency::Builder(data, x_axis, y_axis)
@@ -9,7 +9,7 @@
#include "../component/ShowTime.h"
#include "../Global.h"
#include "../menu/BaseWidgetMenu.h"
#include "Demo_Gallery/base/Tool.h"
#include "Demo_Gallery/base/export.h"
QWidget* Sweep_Frequency_Widget::create_spectrogram_power_plot() {
class Sweep_Frequent_Plot : public renderive::Latency_Eager_Plot {
public:
@@ -27,10 +27,10 @@ QWidget* Sweep_Frequency_Widget::create_spectrogram_power_plot() {
auto overlay = create_renderable_node(get_root_renderable(), "Overlay_Renderable");
x_axis_cache->set_cache_mode(renderive::Renderable_Cache_Mode::Local_Pixel);
y_axis_cache->set_cache_mode(renderive::Renderable_Cache_Mode::Local_Pixel);
x_axis = renderive::Axis::Builder(x_axis_cache, Qt::Horizontal)
x_axis = renderive::Axis::Builder(x_axis_cache, renderive::Orientation::Horizontal)
.set_coord_range({0, 100})
.set_tick_length(-10).build();
y_axis = renderive::Axis::Builder(y_axis_cache, Qt::Vertical)
y_axis = renderive::Axis::Builder(y_axis_cache, renderive::Orientation::Vertical)
.set_coord_range({100, 0})
.set_tick_length(-10).build();
sf = renderive::Sweep_Frequency::Builder(data, x_axis, y_axis)
+2 -6
View File
@@ -1,6 +1,6 @@
#ifndef Global_H
#define Global_H
#include "Renderive/architecture/export.h"
#include "Renderive/export.h"
#include "BackEnd/BackEnd.h"
#include <QApplication>
#include <QDebug>
@@ -14,7 +14,7 @@
#include <QtWidgetsDepends>
#include <functional>
#include <vector>
#include "psc_global_include/Singleton.hpp"
#include "private_psc_global_include/Singleton.hpp"
class Global : public Psc::Singleton<Global> {
public:
explicit Global();
@@ -27,10 +27,6 @@ QRect get_max_rect(const QRect& rect, double WHRate);
int calculate_optimal_font_size(const QString& text, const QSize& space_size, const QFont& font);
int calculate_optimal_font_size(const std::vector<QString>& text_list, const QSize& space_size, const QFont& font);
QPushButton* create_button(const QString& text, int font_size, const std::function<void(void)>& func = nullptr);
namespace renderive {
template <typename T>
class Roll_Object;
}
class Base_Widget_Menu;
void init_click_button(QPushButton* button, const QString& text, int font_size, const std::function<void(void)>& func, renderive::Roll_Object<QPushButton>*);
QPushButton* create_click_button(const QString& text, int font_size, const std::function<void(void)>& func, renderive::Roll_Object<QPushButton>*);
@@ -1,97 +0,0 @@
#ifndef Toolbox_Circular_Linked_List_H
#define Toolbox_Circular_Linked_List_H
#include <vector>
namespace Toolbox {
template<typename T>
struct Circular_Linked_List_Node {
Circular_Linked_List_Node *prev = nullptr, *next = nullptr;
T data;
};
template<typename T>
class Circular_Linked_List {
public:
Circular_Linked_List_Node<T> *head = nullptr;
Circular_Linked_List_Node<T> *cur = nullptr;
void init(const std::vector<T> &data_list) {
head = new Circular_Linked_List_Node<T>();
head->data = data_list.front();
Circular_Linked_List_Node<T> *prev = head;
int n = data_list.size();
for (int i = 1; i < n - 1; i++) {
auto node = new Circular_Linked_List_Node<T>();
node->data = data_list[i];
node->prev = prev;
prev->next = node;
prev = node;
}
auto tail = new Circular_Linked_List_Node<T>();
tail->data = data_list.back();
tail->prev = prev;
prev->next = tail;
tail->next = head;
head->prev = tail;
cur = head;
}
Circular_Linked_List_Node<T> *move(int step = 1) {
if (step == 0) return nullptr;
return step > 0 ? next(step) : prev(-step);
}
Circular_Linked_List_Node<T> *next(int step = 1) {
if (step <= 0) return nullptr;
for (int i = 0; i < step; i++) {
cur = cur->next;
}
return cur;
}
Circular_Linked_List_Node<T> *prev(int step = 1) {
if (step <= 0) return nullptr;
for (int i = 0; i < step; i++) {
cur = cur->prev;
}
return cur;
}
void insert_next(const T &t, Circular_Linked_List_Node<T> *that = nullptr) {
if (that == nullptr) that = cur;
auto node = new Circular_Linked_List_Node<T>();
node->data = t;
node->next = that->next;
node->prev = that;
that->next = node;
}
void insert_prev(const T &t, Circular_Linked_List_Node<T> *that = nullptr) {
if (that == nullptr) that = cur;
auto node = new Circular_Linked_List_Node<T>();
node->data = t;
node->prev = that->prev;
node->next = that;
that->prev = node;
}
std::vector<Circular_Linked_List_Node<T> *> to_vector() {
if (head == nullptr) return {};
std::vector<Circular_Linked_List_Node<T> *> ret;
Circular_Linked_List_Node<T> *cur = head;
do {
ret.push_back(cur);
cur = cur->next;
} while (cur != head);
return ret;
}
void clear() {
if (head == nullptr) return;
Circular_Linked_List_Node<T> *cur = head;
do {
Circular_Linked_List_Node<T> *temp = cur;
cur = cur->next;
delete temp;
} while (cur != head);
head = nullptr;
}
~Circular_Linked_List() {
clear();
}
};
}
#endif
-102
View File
@@ -1,102 +0,0 @@
#ifndef Toolbox_Node_H
#define Toolbox_Node_H
#include <algorithm>
#include <queue>
#include <vector>
namespace Toolbox {
template<typename That>
class Node {
public:
explicit Node() = default;
int index() {
if (!father) return -1;
auto it = std::find(father->sons.begin(), father->sons.end(), static_cast<That *>(this));
if (it == father->sons.end()) return -1;
return static_cast<int>(std::distance(father->sons.begin(), it));
}
bool root() { return !father; }
bool leaf() { return sons.empty(); }
bool first() {
if (!father) return false;
return this == father->sons.front();
}
bool last() {
if (!father) return false;
return this == father->sons.back();
}
That *previous() {
if (!father) return nullptr;
int i = index() - 1;
if (i < 0) return nullptr;
return father->sons[i];
}
That *next() {
if (!father) return nullptr;
int i = index() + 1;
if (i <= 0 || i >= static_cast<int>(father->sons.size())) return nullptr;
return father->sons[i];
}
That *last_child() {
if (sons.empty()) return nullptr;
return sons.back();
}
That *first_child() {
if (sons.empty()) return nullptr;
return sons.front();
}
That *root_node() {
That *ret = static_cast<That *>(this);
while (ret->father != nullptr) {
ret = ret->father;
}
return ret;
}
int deep() {
That *ret = static_cast<That *>(this);
int depth = 0;
while (ret->father != nullptr) {
ret = ret->father;
depth++;
}
return depth;
}
std::vector<That *> deep_traversed() {
std::vector<That *> ret;
ret.push_back(static_cast<That *>(this));
for (auto &child: sons) {
std::vector<That *> child_values = child->deep_traversed();
ret.insert(ret.end(), child_values.begin(), child_values.end());
}
return ret;
}
std::vector<That *> sequence_traversed() {
std::vector<That *> ret;
std::queue<That *> que;
That *that = static_cast<That *>(this);
que.push(that);
while (!que.empty()) {
That *cur = que.front();
que.pop();
int n = static_cast<int>(cur->sons.size());
ret.push_back(cur);
for (int i = 0; i < n; ++i) {
que.push(cur->sons[i]);
}
}
return ret;
}
std::vector<That *> descendants() {
std::vector<That *> ret = sequence_traversed();
if (!ret.empty()) ret.erase(ret.begin());
return ret;
}
That *father = nullptr;
std::vector<That *> sons;
};
template<typename NodeType>
class Node_Manager {
public:
std::vector<NodeType *> roots;
};
}
#endif
-74
View File
@@ -1,74 +0,0 @@
#ifndef Toolbox_Roll_Widget_H
#define Toolbox_Roll_Widget_H
#include <QObject>
#include <QHBoxLayout>
#include <algorithm>
#include <functional>
#include <vector>
namespace Toolbox {
template<typename T>
class Roll_Object : QObject {
public:
explicit Roll_Object(QObject *parent = nullptr) : QObject(parent) {}
explicit Roll_Object(std::vector<T *> widgets, std::function<void(T *)> enter_func,
std::function<void(T *)> leave_func, QObject *parent) :
widgets(std::move(widgets)), enter_func(enter_func), leave_func(leave_func), QObject(parent) {
if (!this->widgets.empty() && enter_func) enter_func(this->widgets[index]);
}
int index = 0;
std::vector<T *> widgets;
std::function<void(T *)> enter_func;
std::function<void(T *)> leave_func;
T *cur() {
if (widgets.empty()) return nullptr;
return widgets[index];
}
void set_cur(T *cur) {
if (widgets.empty()) return;
auto it = std::find(widgets.begin(), widgets.end(), cur);
if (it == widgets.end()) return;
int new_index = static_cast<int>(std::distance(widgets.begin(), it));
if (leave_func) leave_func(widgets[index]);
index = new_index;
if (enter_func) enter_func(widgets[index]);
widgets[index]->update();
}
void roll_right() {
if (widgets.empty()) return;
if (leave_func) leave_func(widgets[index]);
widgets[index]->update();
if (widgets.back() != widgets[index]) {
index++;
} else {
index = 0;
}
if (enter_func) enter_func(widgets[index]);
widgets[index]->update();
}
void roll_left() {
if (widgets.empty()) return;
if (leave_func) leave_func(widgets[index]);
widgets[index]->update();
if (widgets.front() != widgets[index]) {
index--;
} else {
index = static_cast<int>(widgets.size()) - 1;
}
if (enter_func) enter_func(widgets[index]);
widgets[index]->update();
}
QHBoxLayout *hbox_layout(int space) {
auto ret = new QHBoxLayout;
ret->setMargin(0);
ret->setSpacing(space);
for (auto widget: widgets) {
ret->addWidget(widget, 1);
}
return ret;
}
};
}
#endif
@@ -1,18 +0,0 @@
#ifndef Toolbox_Singleton_H
#define Toolbox_Singleton_H
namespace Toolbox {
template<typename Derived>
class Singleton {
public:
static Derived *instance() {
static Derived instance;
return &instance;
}
Singleton(const Singleton &) = delete;
Singleton &operator=(const Singleton &) = delete;
protected:
Singleton() = default;
~Singleton() = default;
};
}
#endif
@@ -1,29 +0,0 @@
#ifndef Toolbox_Singleton_Widget_H
#define Toolbox_Singleton_Widget_H
#include <QDebug>
namespace Toolbox {
template<typename T>
class Singleton_Widget {
public:
static T *instance() {
if (!instance) {
qInfo() << "error Singleton_Widget 未创建" << instance;
}
return instance;
}
Singleton_Widget() {
if (instance) {
qInfo() << "error Singleton_Widget 重复创建" << instance;
}
instance = static_cast<T *>(this);
}
virtual ~Singleton_Widget() {}
Singleton_Widget(T &&) = delete;
Singleton_Widget(const T &) = delete;
void operator=(const T &) = delete;
protected:
static T *instance;
};
template<typename T> T *Singleton_Widget<T>::instance = nullptr;
}
#endif
-7
View File
@@ -1,7 +0,0 @@
#include "Node.hpp"
#include "Circular_Linked_List.hpp"
#include "Singleton.hpp"
#include "Roll_Object.h"
#include "Singleton_Widget.hpp"
#include "view/FileFolderBar.h"
#include "pinyin/VirtualKeyBoard.h"
Binary file not shown.
@@ -1,41 +0,0 @@
#include "FileFolderBar.h"
#include <QPainter>
#include <queue>
namespace Toolbox {
File_Folder_Bar::File_Folder_Bar(QWidget *parent) : QWidget(parent) {
//setAttribute(Qt::WA_OpaquePaintEvent);
}
File_Folder_Bar::~File_Folder_Bar() {
}
void File_Folder::draw(int index, QPainter *painter) {
static QImage file_folder = QImage(":fileFolder.png");
int x = 10 + 20 * deep;
int y = 10 + 30 * index;
// painter->drawImage(x, y, file_folder);
painter->drawImage(0, 0, file_folder);
painter->drawText(x + 20, y + 10, name);
}
void File_Folder_Bar::paintEvent(QPaintEvent *event) {
QWidget::paintEvent(event);
QPainter painter(this);
int index = 0;
for (File_Folder *&root: roots) {
std::queue<File_Folder *> que;
root->deep = 0;
que.push(root);
while (!que.empty()) {
File_Folder *cur = que.front();
que.pop();
int n = cur->sons.size();
cur->draw(index++, &painter);
for (int i = 0; i < n; ++i) {
if (cur->is_show_sons) {
cur->sons[i]->deep = cur->deep + 1;
que.push(cur->sons[i]);
}
}
}
}
painter.end();
}
}
@@ -1,25 +0,0 @@
#ifndef Toolbox_File_Folder_Bar_H
#define Toolbox_File_Folder_Bar_H
#include <QWidget>
#include "../Node.hpp"
namespace Toolbox {
class File_Folder : public Node<File_Folder> {
public:
QString name;
bool is_show_sons = false;
int deep = 0;
void draw(int index, QPainter *painter);
};
class File_Folder_Bar : public QWidget, public Node_Manager<File_Folder> {
Q_OBJECT
public:
explicit File_Folder_Bar(QWidget *parent = nullptr);
~File_Folder_Bar() override;
protected:
void paintEvent(QPaintEvent *event) override;
};
}
#endif
@@ -1,6 +0,0 @@
<RCC>
<qresource prefix="/">
<file>fileFolder.png</file>
<file>arrowDown.png</file>
</qresource>
</RCC>
Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.4 KiB

+1 -1
View File
@@ -1,6 +1,6 @@
#include "ExpandInput.h"
#include "../BackEnd/MainWidget.h"
#include "Widget/base/export.h"
#include "Renderive/export.h"
#include <QAction>
#include <QPainter>
Expand_Input::Expand_Input(QWidget *parent) : QLineEdit(parent) {
+1 -2
View File
@@ -1,4 +1,4 @@
#include "Renderive/architecture/export.h"
#include "Renderive/export.h"
#include <QApplication>
#ifdef _WIN32
#include <QTextCodec>
@@ -6,7 +6,6 @@
#endif
#include "./BackEnd/MainWidget.h"
#include "Application.h"
#include "Renderive/plot/Plot.h"
int main(int argc, char* argv[]) {
Application app(argc, argv);
Application::setAttribute(Qt::AA_UseHighDpiPixmaps);