我是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'的成员
我无法理解为什么它看不到这个变量。
答案 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);
}