怎么在一个对话框里动态创建qwtplot呢
如何在一个对话框里动态创建qwtplot呢?
不使用ui文件,我在一个对话框类构造函数里这样写:
在运行到QwtPlot* plot = new QwtPlot(graphWidget); 这一步就直接退出了。
------解决思路----------------------
你是版主?
那我来接分了..
不使用ui文件,我在一个对话框类构造函数里这样写:
CSpectralAnalyDlg::CSpectralAnalyDlg( QWidget *parent /*= 0*/,QString strCurrFile/*=""*/ )
: QDialog(parent)
{
QVBoxLayout* MenuLayout = new QVBoxLayout();
QMenuBar* menuBar = new QMenuBar(this);
menuBar->setGeometry(QRect(0, 0, 400, 24));
QMenu* menu = menuBar->addMenu(tr("&File"));
QAction* actionNew = menu->addAction(tr("&New"));
actionNew->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_N));
MenuLayout->setMenuBar(menuBar);
QWidget *graphWidget = new QWidget(this);
graphWidget->resize(640,400);
QwtPlot* plot = new QwtPlot(graphWidget);
// plot->resize(640,400);
//设置坐标轴的名称
plot->setAxisTitle(QwtPlot::xBottom, "x->");
plot->setAxisTitle(QwtPlot::yLeft, "y->");
//设置坐标轴的范围
plot->setAxisScale(QwtPlot::xBottom, 0.0, 2.0 * M_PI);
plot->setAxisScale(QwtPlot::yLeft, -1.0, 1.0);
//设置右边标注
plot->insertLegend(new QwtLegend(), QwtPlot::RightLegend);
//使用滚轮放大/缩小
(void) new QwtPlotMagnifier(plot->canvas());
//使用鼠标左键平移
(void) new QwtPlotPanner( plot->canvas() );
//计算曲线数据
QVector<double> xs;
QVector<double> ys;
for (double x = 0; x < 2.0 * M_PI; x+=(M_PI / 10.0))
{
xs.append(x);
ys.append(qSin(x));
}
//构造曲线数据
QwtPlotCurve* pCurve = new QwtPlotCurve("Sine");
pCurve->setData(xs,ys);//设置数据
pCurve->setStyle(QwtPlotCurve::Lines);//直线形式
pCurve->setCurveAttribute(QwtPlotCurve::Fitted, true);//是曲线更光滑
pCurve->setPen(QPen(Qt::blue));//设置画笔
pCurve->attach(plot);//把曲线附加到plot上
//QVBoxLayout* PlotLayout = new QVBoxLayout();
// PlotLayout->addWidget(pCurve);
QGridLayout* pMainLayou = new QGridLayout(this);
pMainLayou->addLayout(MenuLayout,0,0,Qt::AlignLeft);
pMainLayou->addWidget(graphWidget);
//pMainLayou->
}
在运行到QwtPlot* plot = new QwtPlot(graphWidget); 这一步就直接退出了。
------解决思路----------------------
你是版主?
那我来接分了..