Как установить QChartView в Qt Designer?
Моя проблема идентична этой из этой темы: Как вставить QChartView в форму с Qt Designer? однако я все еще не могу решить это. Я пытался скачать плагин, но после ввода qmake в терминале я получаю следующую ошибку:
Неизвестная тестовая функция: qtHaveModule
С другой стороны, я также не могу использовать первое решение. Где я могу найти файл.pro в Qt Designer (не Qt Creator)?
Заранее спасибо.
1 ответ
Эти проблемы обычно возникают из-за того, что вы конфигурируете свой проект с более старой версией qmake, часто для Qt4.
QtChart доступен только в современных версиях Qt. Если вы используете QtCreator, это шаги для обновления вашей системы сборки:
Идти к:
Tools -> Options...
После этого перейдите к:
Kits -> Qt Versions
Обычно вы должны увидеть разные версии Qt, которые установлены. Убедитесь, что вы видите современную версию Qt, QtCharts 2.0 был выпущен с Qt 5.6.0, так что это ваша минимальная версия.
Теперь обновите ваши комплекты. Если вы компилируете приложение для настольного компьютера, убедитесь, что ваш комплект по умолчанию или тот, который вы используете, использует правильную версию Qt. Вы найдете поле со списком, где вы можете выбрать правильный.
После этого обновите и снова запустите qmake.
Что касается вашей второй проблемы, вы не редактируете свой профессиональный файл в QtDesigner, вы делаете это в 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.
Вам просто нужно заменить заключительную часть для вашего особого случая:
...
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);
}