【发布时间】:2023-03-13 18:04:01
【问题描述】:
我正在尝试编写一个 Qt C++ 代码,该代码应该通过单击按钮在单独的窗口中进行绘图。
我创建了两个表单 1:主窗口,2:对话框。一旦我点击按钮,绘图会立即出现在不同的窗口中,然后另一个对话框窗体窗口会覆盖我的绘图窗口。
总结是点击Pushbutton会产生两个不可取的窗口。
我做了以下事情:
使用 Qt Widgets Applications 创建了新项目,该项目生成 mainwindow.cpp 和 mainwindow.h 文件以及 main.cpp 文件
使用表单在 mainwindow.cpp 文件上创建按钮
通过右键单击项目使用“添加新”创建新的对话框表单
然后编写代码在 mainwindow.cpp 文件的 on_pushButton_clicked() 中生成绘图(使用 Chart)
然后运行代码。最终出现按钮窗口。然后我点击 Push 按钮,然后它会生成两个单独的窗口 1:绘图窗口,2:空白对话框窗口
一共有三个*.cpp文件,两个*.h文件
这里是 mainwindow.cpp 代码:
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include"dialog.h"
#include <QtWidgets/QApplication>
#include <QtWidgets/QMainWindow>
#include <QtCharts/QChartView>
#include <QtCharts/QLineSeries>
QT_CHARTS_USE_NAMESPACE
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::on_pushButton_clicked()
{
Dialog aa;
aa.setDisabled(false);
//aa.display();
//![1]
QLineSeries *series = new QLineSeries();
//![1]
//![2]
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);
//![2]
//![3]
QChart *chart = new QChart();
chart->legend()->hide();
chart->addSeries(series);
chart->createDefaultAxes();
chart->setTitle("Simple line chart example");
//![3]
//![4]
QChartView *chartView = new QChartView(chart);
chartView->setRenderHint(QPainter::Antialiasing);
//![4]
//![5]
QMainWindow window;
window.setCentralWidget(chartView);
window.resize(400, 300);
window.show();
//![5]
aa.exec();
}
实际结果:点击PushButton会产生两个独立的窗口1:绘图窗口,2:空白窗口
预期结果:单击 PushButton 应该只生成 PlotWindow
【问题讨论】: