如何在Qt Designer中安装QChartView?

时间:2019-04-02 13:10:00

标签: qt qt-designer qchartview

我的问题和这个话题的问题相同:How to insert QChartView in form with Qt Designer?,但是我仍然无法解决。 我尝试下载插件,但是在终端中输入qmake后,出现以下错误:

未知的测试功能:qtHaveModule

另一方面,我也不能使用第一个解决方案。在哪里可以在Qt Designer(不是qt创建者)中找到.pro文件?

先谢谢您。

1 个答案:

答案 0 :(得分:0)

通常会出现此问题,因为您正在使用旧版本的qmake(通常是Qt4)配置项目。

QtChart仅在现代版本的Qt中可用。如果您使用的是QtCreator,请执行以下步骤来更新构建系统:

转到:

Tools -> Options...

之后,请转到:

Kits -> Qt Versions

通常,您应该看到已安装的Qt的不同版本。检查您是否可以看到Qt的现代版本,QtCharts 2.0是与Qt 5.6.0一起发布的,因此这是您的最低版本。

现在,更新您的工具包。如果要编译桌面应用程序,请检查您的默认工具包或您使用的工具包是否使用了正确的Qt版本。您会发现一个组合框,可以在其中选择合适的框。

然后,更新并再次运行qmake。

关于第二个问题,您没有在QtDesigner中编辑您的pro文件,而是在QtCreator中进行了编辑。基本上,打开您的项目并添加Qt依赖项:

QT += charts

现在,打开您的mainwindow.ui文件或您想要插入图表视图的文件,然后按照您链接的帖子的步骤进行操作。

示例:

这是经典的.pro配置:

QT += charts 
SOURCES += \ main.cpp

在主文件中,应始终在顶部添加QT_CHARTS_USE_NAMESPACE。例如,要显示折线图,您可以执行以下操作:

#include <QtWidgets/QApplication>
#include <QtWidgets/QMainWindow>
#include <QtCharts/QChartView>
#include <QtCharts/QLineSeries>

QT_CHARTS_USE_NAMESPACE

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    // Create your time series
    QLineSeries *series = new QLineSeries();
    series->append(0, 6);
    series->append(2, 4);
    series->append(3, 8);
    series->append(7, 4);
    series->append(10, 5);
    *series << QPointF(11, 1) << QPointF(13, 3) << QPointF(17, 6) << QPointF(18, 3) <<   QPointF(20, 2);

    // Configure your chart
    QChart *chart = new QChart();
    chart->legend()->hide();
    chart->addSeries(series);
    chart->createDefaultAxes();
    chart->setTitle("Simple line chart example");

    // Create your chart view
    QChartView *chartView = new QChartView(chart);
    chartView->setRenderHint(QPainter::Antialiasing);

    // Display into a main window
    QMainWindow window;
    window.setCentralWidget(chartView);
    window.resize(400, 300);
    window.show();

    return a.exec();
}

来源:Qt Example

您只需要为特殊情况替换最后一部分:

...

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    ...
    // chartView is the name of the widget your promoted
    ...

    // Create your chart view
    ui->chartView->setRenderHint(QPainter::Antialiasing);
    ui->chartView->setChart(chart);
}