我想实现基于QChart和QChartView的图表选择。这些类的家族有一个很大的优势 -易于使用 openGL和动画,例如:
QLineSeries *series = new QLineSeries();
series->setUseOpenGL(true); // <==
QChart *chart = new QChart();
chart->addSeries(series);
chart->setAnimationOptions(QChart::AllAnimations); // <==
QChartView *chartView = new QChartView(chart);
chartView->setRenderHint(QPainter::Antialiasing);
Run Code Online (Sandbox Code Playgroud)
该QChartView类提供了有用的缩放功能- QChartView :: setRubberBand() :
chartView->setRubberBand(QChartView::RectangleRubberBand);
Run Code Online (Sandbox Code Playgroud)
主要问题是橡皮筋只能用于缩放,但我需要实现它用于不缩放的水平选择,因为该功能通常在音频编辑器中实现:

现在,当我继承 QChartView 时,我可以在选择后禁用缩放:
class ChartView : public QChartView
...
bool m_drawRubberBand;
QRubberBand m_rubberBand;
...
ChartView::ChartView(QChart *chart, QWidget *parent)
: QChartView(chart, parent)
{
setRubberBand(QChartView::HorizontalRubberBand);
}
...
// Just copy-paste from the Qt 5 sources - file \Src\qtcharts\src\charts\qchartview.cpp:
/*! …Run Code Online (Sandbox Code Playgroud) 我尝试将所有源文件从目标文件夹转换为 UTF-8(无 BOM)编码。我使用以下 PowerShell 脚本:
$MyPath = "D:\my projects\etc\"
Get-ChildItem $MyPath\* -Include *.h, *.cpp, *.c | Foreach-Object {
$content = Get-Content $_.FullName
$Utf8NoBomEncoding = New-Object System.Text.UTF8Encoding $False
[System.IO.File]::WriteAllLines($_.FullName, $content, $Utf8NoBomEncoding)
}
cmd /c pause | out-null
Run Code Online (Sandbox Code Playgroud)
如果文件已经不是UTF-8,它可以正常工作。但是,如果某个文件已经在 UTF-8 no-BOM 中,则所有国家符号都会转换为未知符号(例如,如果我再次运行脚本)。如何更改脚本以解决问题?
我需要处理几个对象,每个操作可能需要很长时间.
处理无法放在GUI(主)线程中,我在其中启动它.
我需要做的所有的一些对象在通信上的异步操作,类似的东西来std::async用std::future或QtConcurrent::run()在我的主要框架(Qt的5),用QFuture等,但它不提供线程的选择.我总是需要在一个额外的线程中使用选定的对象(objects == devices),
因为:
注意:串行端口始终以独占访问权限打开(即,没有其他进程或线程可以访问已打开的串行端口).
所以,我的问题.
如何实现该功能?
MyFuture<T> fut = myAsyncStart(func, &specificLiveThread);
Run Code Online (Sandbox Code Playgroud)
一个活动线程必须多次传递.
我有counter.h:
static int count() {
static int counter = 0; // called anew in each translation unit
return ++counter;
}
Run Code Online (Sandbox Code Playgroud)
和Singleton.h:
class Singleton
{
public:
Singleton(const Singleton& other) = delete;
Singleton& operator = (const Singleton& other) = delete;
static Singleton& instance()
{
static Singleton ret; // called only once
return ret;
}
private:
Singleton() { std::cout << "call\n"; }
};
Run Code Online (Sandbox Code Playgroud)
和foo.cpp:
void foo()
{
count();
auto& db = Singleton::instance();
}
Run Code Online (Sandbox Code Playgroud)
动物园.cpp:
void zoo() …Run Code Online (Sandbox Code Playgroud) c++ ×2
qt ×2
asynchronous ×1
future ×1
plot ×1
powershell ×1
qchart ×1
qt5 ×1
qtcharts ×1
utf-8 ×1