您好 我在代码中遇到问题,以下代码重新调整错误
没有用于调用QpushButton :: QPushButton的匹配函数(QString *&,QWidget *&)
和
没有用于调用QPainter :: drawText的匹配函数(const QPointF&,const 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 * parent): 的QMainWindow(父), ui(新的Ui :: NewWindow) { UI-> setupUi(本); w1 = new MainWindow(“你好”,这个); W1->显示(); w6->显示(); }
NewWindow ::〜NewWindow() { 删除ui; }
请帮帮我。 预先感谢您的帮助。
答案 0 :(得分:2)
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)
或类似。< / LI>
text_str
是什么类型。如果这是指向QString
的指针,它也不起作用,但错误消息应该略有不同。 (另外,你唯一的drawText调用中给出的点不是QPointF而是QPoint,所以我认为错误和你发布的代码之间存在一些不一致的地方)答案 1 :(得分:0)
1)正如已经指出的那样,QPushButton没有构造函数需要QString *&amp; QWidget *作为参数。我想你可能会在传递引用和传递指针之间感到困惑。
2)DrawText的函数签名是
void QPainter::drawText ( const QPoint & position, const QString & text )
而text_str似乎是一个指向QString的指针。 所以使用,
painter1.drawText( point1, *text_str );