Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Qt QCustomPlot在网格上设置pixamp_Qt_Qpixmap_Qcustomplot - Fatal编程技术网

Qt QCustomPlot在网格上设置pixamp

Qt QCustomPlot在网格上设置pixamp,qt,qpixmap,qcustomplot,Qt,Qpixmap,Qcustomplot,我尝试在QCustomPlot上添加pixamp,以下是我的代码: MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); _pixmap = new QCPItemPixmap(ui->widget); ui->widget->setInteractions(QCP::i

我尝试在QCustomPlot上添加pixamp,以下是我的代码:

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow) {

    ui->setupUi(this);

    _pixmap = new QCPItemPixmap(ui->widget);
    ui->widget->setInteractions(QCP::iRangeDrag | QCP::iRangeZoom | QCP::iSelectPlottables);
}

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

void MainWindow::on_pushButton_clicked() {

    QImage image = QImage(200, 200, QImage::Format_RGB32);
    int image_size = 200 * 200;
    QRgb pixel;
    QRgb green = qRgb(0, 255, 0);
    QRgb red = qRgb(255, 0, 0);

    for(int i = 0; i < image_size; i++) {

        if(i % 2 == 0) {
            pixel = green;
        }
        else {
            pixel = red;
        }
        image.setPixel(i / 200, i % 200, pixel);
    }

    QPixmap pixels = QPixmap::fromImage(image.scaled(ui->widget->width(),ui->widget->height(),
                                                     Qt::IgnoreAspectRatio, Qt::FastTransformation));

    _pixmap->setVisible(true);
    _pixmap->setScaled(true);
    _pixmap->setPixmap(pixels);

    _pixmap->topLeft->setCoords(2.0, 3.0);
    _pixmap->bottomRight->setCoords(5.0, 0.0);

    ui->widget->replot();
}
MainWindow::MainWindow(QWidget*父项):
QMainWindow(父级),
用户界面(新用户界面::主窗口){
用户界面->设置用户界面(此);
_pixmap=新的QCPItemPixmap(ui->widget);
ui->widget->setInteractions(QCP::iRangeDrag | QCP::iRangeZoom | QCP::iSelectPlottables);
}
MainWindow::~MainWindow()
{
删除用户界面;
}
void主窗口::在按钮上单击(){
QImage image=QImage(200200,QImage::Format_RGB32);
int image_size=200*200;
QRgb像素;
QRgb绿色=QRgb(0,255,0);
QRgb红色=QRgb(255,0,0);
对于(int i=0;iwidget->width(),ui->widget->height(),
Qt::IgnoreAspectRatio,Qt::FastTransformation);
_pixmap->setVisible(真);
_pixmap->setScaled(真);
_pixmap->setPixmap(像素);
_pixmap->topLeft->setCoords(2.0,3.0);
_pixmap->bottomRight->setCoords(5.0,0.0);
ui->widget->replot();
}
pixmap应该是([2,3]、[5,3]、[5,0]、[2,0])之间的矩形,但是 我不太清楚:

为什么gap及其未设置为5.0?

查看方法

void QCPItemPixmap::setScaled ( bool  scaled, Qt::AspectRatioMode  aspectRatioMode = Qt::KeepAspectRatio, Qt::TransformationMode  transformationMode = Qt::SmoothTransformation  )
您可以看到,
aspectRatioMode
的默认值是
Qt::keepasspectratio
将其更改为
Qt::IgnoreAspectRatio
,以获得所需的结果

它看起来是这样的:

...
_pixmap->setVisible(true);
_pixmap->setScaled(true, Qt::IgnoreAspectRatio);
_pixmap->setPixmap(pixels);
...