2011-05-09 54 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);