2011-05-09 3 views
0

Salut J'ai un problème dans le code que le code suivant réaccorder l'erreur quiProblème dans le constructeur?

pas de fonction concordante pour appel à QPushButton :: QPushButton (QString * &, QWidget * &)
et

pas de fonction concordante pour l'appel à QPainter :: drawText (const QPointF &, const QString &)

et le code est

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(); 
} 

et la classe mainnWindow est appelée par le code suivant

NewWindow :: NewWindow (QWidget * parent): QMainWindow (parent), ui (nouveau Ui :: NewWindow) { UI-> setupUi (ce); w1 = nouvelle MainWindow ("Bonjour", ceci); w1-> show(); w6-> show(); }

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

Aidez-moi s'il vous plaît. Advance Merci pour votre aide.

Répondre

2
  1. constructeur de QPushButton prend une référence QString pas un pointeur, voir http://doc.trolltech.com/4.7.1/qpushbutton.html#QPushButton-2 Alors vous devriez changer votre constructeur MainWindow::MainWindow(QString *str,QWidget *parent)-MainWindow::MainWindow(const QString &str,QWidget *parent) ou similaire.
  2. L'erreur drawText() ne m'arrive pas, car la signature semble correcte. C'est un peu flou, quel est le type text_str. Si c'est un pointeur vers QString, cela ne fonctionnerait pas non plus, mais le message d'erreur devrait être légèrement différent. (De plus, le point donné dans votre seul appel drawText n'est pas QPointF mais QPoint, donc je pense qu'il ya quelque chose de contradictoire entre les erreurs et le code affiché)
0

1) Comme déjà indiqué QPushButton n'a pas de constructeur qui prend QString * & QWidget * en tant qu'arguments. Je pense que vous pourriez être confus entre passer par référence et passer un pointeur.

2) La signature de fonction pour DrawText est

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

que text_str semble être un pointeur vers QString. Donc, utilisez,

painter1.drawText(point1, *text_str);