Qt 无法编译

Qt can't compile

本文关键字:编译 Qt      更新时间:2023-10-16

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

我复制了所有内容,但 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

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

我不明白为什么它看不到这个变量。

你的 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);
}