DaDiao444 2018-11-13 14:08 采纳率: 0%
浏览 859

QT paintEvent 中的一个int值 怎么通过图形界面输入?

就是下面的n值,先谢谢大佬们了

 void MainWindow::paintEvent(QPaintEvent *)
{
    int D=5;
    int n;//这个值
    point *p=new point[n];
    QPainter painter(this);
    QPen pen;
    pen.setColor(Qt::blue);
    pen.setWidth(6);
    painter.setPen(pen);
    QPointF *pointf=new QPointF [n];
    srand((unsigned int)(time(0)));
    for (int i=0; i<n; ++i)
    {
        p[i].x=rand()%1000+1;
        p[i].y=rand()%1000+1;
        pointf[i].setX(p[i].x);
        pointf[i].setY(p[i].y);
    }
    painter.drawPoints(pointf, n);
    point ans[2];
    double dismin1 = closestpoint(p, n, ans[0], ans[1]);
    double dismin2 = closestpointBF(p,n);
    pen.setColor(Qt::red);
    pen.setWidth(4);
    painter.setPen(pen);
    painter.drawLine(ans[0].x,ans[0].y,ans[1].x,ans[1].y);
    std::string str1="The shortest distance is "+std::to_string(dismin1)+"   glass state:broken    point1:("+std::to_string(ans[0].x)+","+std::to_string(ans[0].y)+")  point2:("+std::to_string(ans[1].x)+","+std::to_string(ans[1].y)+")";
    std::string str2="The shortest distance is "+std::to_string(dismin1)+"   glass state:not broken    point1:("+std::to_string(ans[0].x)+","+std::to_string(ans[0].y)+")  point2:("+std::to_string(ans[1].x)+","+std::to_string(ans[1].y)+")";
    std::string str3="Brute Force:"+std::to_string(dismin2)+"   Divide&Conquer:"+std::to_string(dismin1);
    QString qstr1 = QString::fromStdString(str1);
    QString qstr2 = QString::fromStdString(str2);
    QString qstr3 = QString::fromStdString(str3);
    if(dismin1<D)
        painter.drawText(150, 1050, qstr1);
    else
        painter.drawText(150, 1050, qstr2);
    painter.drawText(350, 1075, qstr3);
    //delete []p;
}

  • 写回答

1条回答 默认 最新

  • hcf134a 2018-11-14 01:12
    关注

    实在不行把这个 n 变为 全局变量。写在外面,让图形界面和paintEvent 都可以修改。

    评论

报告相同问题?

悬赏问题

  • ¥15 matlab实现基于主成分变换的图像融合。
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料
  • ¥15 使用R语言marginaleffects包进行边际效应图绘制
  • ¥20 usb设备兼容性问题
  • ¥15 错误(10048): “调用exui内部功能”库命令的参数“参数4”不能接受空数据。怎么解决啊