qcustomplot 绘图 1

发布时间 2023-06-17 11:36:03作者: 金凯旋

周末,闲读,翻翻qcustomplot 例子。

以前用qchart, 实在无法接收这个类的低效。打开qchart, 仿佛在推一个滞重的铁门。qcustomplot 感觉轻快灵动。

1. 准备CMakeLists.txt

cmake_minimum_required(VERSION 3.5)

project(plot_0 VERSION 0.1 LANGUAGES CXX)

set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Widgets PrintSupport)
find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Widgets PrintSupport)

set(PROJECT_SOURCES
        main.cpp
        window.cpp
        window.h
        ../plot/qcustomplot.h
        ../plot/qcustomplot.cpp
)

qt_add_executable(plot_0
    MANUAL_FINALIZATION
    ${PROJECT_SOURCES}
)

target_link_libraries(plot_0 PRIVATE Qt${QT_VERSION_MAJOR}::Widgets Qt${QT_VERSION_MAJOR}::PrintSupport)

set_target_properties(plot_0 PROPERTIES
    WIN32_EXECUTABLE TRUE
)

install(TARGETS plot_0
    BUNDLE DESTINATION .
    LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
    RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
)

 

绘制一个基本图:

   QWidget *w = new QWidget;
   QCustomPlot *plot = new QCustomPlot(w);
   ... 
   //设置窗口显示,属于qt 日常操作
   QVBoxLayout *layout = new QVBoxLayout(w);
   layout->setSpacing(6);
   layout->setContentsMargins(11, 11, 11, 11);
   layout->addWidget(plot);
   ...

    plot->addGraph();
    plot->graph(0)->setData(x, y);

    plot->xAxis->setLabel("x");
    plot->yAxis->setLabel("y");

    plot->xAxis->setRange(-1, 1);
    plot->yAxis->setRange(0, 1);