2011-05-09 53 views
0

嗨 我有代码的问题,下面的代码重新调谐错误构造函数中的问题?

没有匹配函数调用QpushButton :: QPushButton(QString的* &,QWidget的* &)

没有匹配功能对于调用的QPainter ::的drawText(常量QPointF &,常量的QString &)

和代码是

MainWindow::MainWindow(QWidget *parent) : 
    QPushButton(parent) 
{ 
    //ui->setupUi(this); 
    //connect(this,SIGNAL(clicked()),this,SLOT(newWindow())); 
} 


MainWindow::MainWindow(QString *str,QWidget *parent) : 
    QPushButton(str,parent) 
{ 
    //ui->setupUi(this); 
    text_str=str; 
    connect(this,SIGNAL(clicked()),this,SLOT(newWindow())); 
} 

MainWindow::~MainWindow() 
{ 
    //delete ui; 
} 

void MainWindow::paintEvent(QPaintEvent* event) 
{ 
    QPainter painter(this); 
    painter.setRenderHint(QPainter::Antialiasing); 

    QPen pen(Qt::black); 
    pen.setWidth(6); 
    painter.setPen(pen); 

    static const QPointF points[6] = { 
     QPointF(300.0, 160.0),//Top Line 
     QPointF(220.0, 160.0),// 
     //QPointF(300.0, 180.0), 
     QPointF(195.0, 210.0), 
     QPointF(220.0, 260.0),// 
     QPointF(300.0, 260.0),//Bottom Line 
     QPointF(325.0, 210.0) 
    }; 

    painter.drawPolygon(points, 6); 

    QPainter painter1(this); 
    QPen pen1(Qt::green); 
    painter1.setPen(pen1); 
    QLinearGradient grad1(300, 160, 325, 260); 
    QBrush brush1(grad1); 
    grad1.setColorAt(1.0, Qt::white); 
    painter1.setBrush(brush1); 
    QFont font("Times", 12); 
    painter1.setFont(font); 
    QPoint point1 = QPoint(240, 225); 
    painter1.drawText(point1, text_str); 
} 

void MainWindow::newWindow() 
{ 
    FrameWindow *frm=new FrameWindow(this); 
    frm->show(); 
} 

和mainnWindow类由下面的代码

NewWindow :: NewWindow(QWidget的*父)称为: 的QMainWindow(父), UI(新UI :: NewWindow) { UI-> setupUi (这个); w1 = new MainWindow(“Hello”,this); w1-> show(); w6-> show(); }

NewWindow ::〜NewWindow() { delete ui; }

请帮帮我。 高级谢谢你的帮助。

回答

2
  1. QPushButton的构造需要QString引用不是指针,看http://doc.trolltech.com/4.7.1/qpushbutton.html#QPushButton-2所以您应该在构造改变MainWindow::MainWindow(QString *str,QWidget *parent)MainWindow::MainWindow(const QString &str,QWidget *parent)或相似。
  2. drawText()错误我不太明白,因为签名似乎没问题。有点不清楚,text_str是什么类型。如果这是指向QString的指针,它也不起作用,但是错误信息应该略有不同。 (同样,在你仅有的drawText电话给出的点不是QPointF但QPoint,所以我觉得有一些错误,你发布的代码之间的不一致)
0

1)正如所指出的QPushButton已经没有构造函数QString * & QWidget *作为参数。我想你可能会混淆传递引用和传递指针。

2)DrawText的函数签名是

void QPainter::drawText (const QPoint & position, const QString & text) 

而text_str似乎是一个指针的QString。 所以用,

painter1.drawText(point1, *text_str);