当前位置: 代码迷 >> QT开发 >> QT在MainWindow中使用Widget画网格曲线
  详细解决方案

QT在MainWindow中使用Widget画网格曲线

热度:93   发布时间:2016-04-25 03:43:51.0
QT在MainWindow中应用Widget画网格曲线
我正在MainWindow中添加了个Widget,(ˇ?ˇ) 想~在Widget中画网格,画曲线,但是不知道怎么写Painter的指针,不太会用PaintEvent,这个Widget应该怎么用啊

------解决方案--------------------
基本上没用过Designer,手残的坚持纯手工……,
下面是我测试你的plotter的代码和截图,


// class plotrer 基本没做改动,只是改了MainWindow让我能编译
// plotter.h
class plotter : public QWidget
{
Q_OBJECT // 你的源代码里居然没有这行,这到还行
public: // 没有这行你怎么编译的???
    plotter(QWidget *parent=0);
private:
    void paintEvent(QPaintEvent *event);
    void drawGrid(QPainter *);
};

// plotter.cpp
plotter::plotter(QWidget *parent):QWidget(parent)
{
}

void plotter::paintEvent(QPaintEvent *event)
{
    QPainter painter(this);
    drawGrid(&painter);
    painter.setPen(Qt::black);
    painter.drawLine(0,0,100,100);

}

void plotter::drawGrid(QPainter *painter)
{

    painter->drawLine(0,0,100,100);
    int Margin=40;//边缘
        QRect rect;
        //取得绘图区域,大小要减去旁白
        //rect=QRect(Margin+300,Margin+300,width()-Margin-700,height()-Margin-500);
        rect=QRect(Margin+25,Margin,width()-2*Margin-10,height()-2*Margin);
        for(int i=0;i<=20;i++)
        {
        int x=rect.left()+(i*(rect.width()-1)/20);
        painter->drawLine(x,rect.top(),x,rect.bottom());
        }
        for(int j=0;j<=10;j++)
        {
            int y=rect.bottom()-(j*(rect.height()-1)/10);
            painter->drawLine(rect.left()-5,y,rect.right(),y);
  相关解决方案