Qt无法编译

时间:2018-01-22 13:57:21

标签: c++ qt

我是QT和c ++的新手。所以我做这个教程Tutorial

我复制了所有内容,但是qt无法编译。

    //imageviewer.cpp
#include "imageviewer.h"
#include "ui_imageviewer.h"

ImageViewer::ImageViewer(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::ImageViewer)
{
    ui->setupUi(this);

    QImage image("C:/TEST/GoldenGate.png");
    ui->imageLabel->setPixmap(QPixmap::fromImage(image));
}

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

//imageviewer.h
#ifndef IMAGEVIEWER_H
#define IMAGEVIEWER_H

#include <QMainWindow>
#include <QLabel>
#include <QScrollArea>

namespace Ui {
class ImageViewer;
}

class ImageViewer : public QMainWindow
{
    Q_OBJECT

public:
    explicit ImageViewer(QWidget *parent = 0);
    ~ImageViewer();

private:
    QLabel *imageLabel;
    QScrollArea *scrollArea;
    Ui::ImageViewer *ui;

};

#endif // IMAGEVIEWER_H

得到了这个: '类Ui :: ImageViewer'没有名为'imageLabel'的成员

我无法理解为什么它看不到这个变量。

1 个答案:

答案 0 :(得分:2)

你的Ui :: ImageViewer不完整..它没有添加'imageLabel'。在设计模式下打开表单并添加QLabel,将其命名为“imageLabel”并重试。

否则,请按照教程结束,在imageview.cpp中动态添加QLabel'imageLabel'。

// imageview.cpp

#include "imageviewer.h"
#include "ui_imageviewer.h"

ImageViewer::ImageViewer(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::ImageViewer)
{
    ui->setupUi(this);

    imageLabel = new QLabel;
    imageLabel->setBackgroundRole(QPalette::Base);
    imageLabel->setSizePolicy(QSizePolicy::Ignored, QSizePolicy::Ignored);
    imageLabel->setScaledContents(true);

    scrollArea = new QScrollArea;
    scrollArea->setBackgroundRole(QPalette::Dark);
    scrollArea->setWidget(imageLabel);
    setCentralWidget(scrollArea);

    setWindowTitle(tr("Image Viewer"));
    resize(500, 400);
}