プロが教える店舗&オフィスのセキュリティ対策術

参考サイト:Qt QImage画像を表示
http://mf-atelier.sakura.ne.jp/mf-atelier/module …

下記のコードに関して、viewport()に関して、
『error: ‘viewport’ was not declared in this scope』のエラーが出ます。

Q1)このエラーの回避についてコメント頂けますと大変ありがたいです。


=================================
//file name: mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QPainter>
//#include <QTransform>

QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
Q_OBJECT

public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
void setImg( QImage &img );
private:
Ui::MainWindow *ui;
void paintEvent( QPaintEvent *event );
QImage m_img;
QTransform m_matrix; //追加分
};
#endif // MAINWINDOW_H

===========================
//file name: mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"

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

MainWindow::~MainWindow()
{
delete ui;
}
//QRect QPainter::viewport() const
void MainWindow::paintEvent( QPaintEvent *event ){
QPainter widgetpainter( viewport() ); <ーーここです
//error: ‘viewport’ was not declared in this scope

widgetpainter.setWorldTransform( m_matrix );

QImage qimg = m_img.scaled(
viewport()->width(),
viewport()->height(),
Qt::KeepAspectRatio,Qt::FastTransformation);
widgetpainter.drawImage( 0, 0, qimg );
}

void MainWindow::setImg( QImage &img ){
m_img = QImage( img );
viewport()->update();
}
===============================
以上、よろしくお願いします。

A 回答 (2件)

「width() と height() という 2つのメンバー関数を持つなんらかのクラス」へのポインタを返すように宣言する, としかいえないなぁ.



どのクラスへのポインタを返せばいいのかは, 自分で調べること.
    • good
    • 0

その「viewport」という関数をしかるべきところで宣言する.

    • good
    • 0
この回答へのお礼

お世話になります。
『viewport()』は下記の様に使用されていますが、
その場合の宣言方法は?
viewport()->width(),
viewport()->height(),
以上、宜しくお願いします。

お礼日時:2020/03/19 09:20

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!