QPixmap 파생 클래스에 대해 스케일링 된 메서드를 포함 할 수 있습니까?

user12927872

QPixmap생성시 파생 개체를 원하는 크기로 만들고 싶습니다. 이 가상 수업이 있다고 가정 해 보겠습니다.

#pragma once
#include <QPixmap>

#include <QString>

class MyPixmap : public QPixmap
{
public:
    enum class Size { icon, veryVerySmall, medium, large };
    static int toInt(Size size);

    MyPixmap (QString fileName, Size size);
    const QString& getPath();
private:
    QString m_fileName; //
    Size m_size;
};
#include "MyPixmap.h"
#include "MyGraphicsScene.h"

int MyPixmap::toInt(Size size)
{
    switch (size)
    {
    case MyPixmap::Size::icon:
        return 20;
    case MyPixmap::Size::veryVerySmall:
        return MyGraphicsScene::size / 20;
    case MyPixmap::Size::medium:
        return MyGraphicsScene::size / 32;
    case MyPixmap::Size::large:
        return MyGraphicsScene::size / 40;
    default:
        throw std::exception{ "Unreachable code reached" };
    }
}

MyPixmap::MyPixmap(QString fileName, Size /* size*/)
    :
    m_fileName{ fileName }
{
    load("PATH/TO/FOLDER/" + fileName + ".png");
    // scaled(size, size);
}

const QString& MyPixmap::getPath()
{
    return m_piece;
}

따라서이 코드를 실행할 수 있습니다.

#include "MyPixmap.h"

int main()
{
   MyPixmap myPixmap{ "Butterfly", MyPixmap::Size::veryVerySmall };
   // pass myPixmap to various functions and objects
   return 0;
}

이후 생성자 내부 크기 조절, 작동하지 않습니다 scaledA는 static기능. 또는 QPixamp scaled()다음과 같이 오버로드 할 수 있습니다 .

QPixmap PiecePixmap::scaled()
{
    int intSize{ toInt(m_size) };
    return scaled(intSize, intSize);
}

그러나 나는 여전히 실제 MyPixmap객체를 사용하지 않습니다 .

클래스 자체 내에서 픽스맵의 크기를 조정할 수 있습니까, 아니면 scaled특정 조각이 내부적으로 하드 코딩 된 크기가되도록 내 최선의 방법으로 제안한대로 오버로딩 됩니까?

참고 :이 게시물을 많이 편집 했으므로 Monopoly 예제를 보려면 편집 기록을 확인하십시오. 현재 질문 코드는 데모 용이므로 테스트되지 않았습니다.

user12927872

으로 이고르 Tandetnik가 언급 한, 그것은 호출하여 즉시 조정 픽스맵을 만들 수 있어요 scaled방법을 다음과 같이 복사 생성자에 반환 값을 전달 :

MyPixmap::MyPixmap(QString path, int height, int length)
    : QPixmap{ QPixmap{ path }.scaled(size, size) }
{
}

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

기본 클래스 개체에 대한 파생 클래스 포인터는 파생 클래스의 메서드를 어떻게 호출 할 수 있습니까?

분류에서Dev

기본 클래스 개체에 대한 파생 클래스 포인터는 파생 클래스의 메서드를 어떻게 호출 할 수 있습니까?

분류에서Dev

파생 클래스에 추가 메서드와 멤버가 포함 된 경우 기본 클래스에서 파생 클래스로 static_cast를 수행 할 수 있습니까?

분류에서Dev

파이 게임의 같은 클래스에있는 다른 메서드에 의해 생성 된 속성을 메서드에 부여 할 수 있습니까?

분류에서Dev

Domino Designer에서 Java 코드에 대해 생성 된 클래스 파일을 어떻게 볼 수 있습니까?

분류에서Dev

함수 분포에 대해 mean 및 std dev를 반환하는 일반적인 파이썬 클래스 메서드를 어떻게 만들 수 있습니까?

분류에서Dev

Ruby : 클래스 만 포함 된 파일을 '요구'할 수 있습니까?

분류에서Dev

파생 클래스에서 슈퍼 클래스의 공용 메서드를 @Override 할 수 있습니까?

분류에서Dev

기본 클래스에서 파생 클래스 함수를 어떻게 친구 할 수 있습니까?

분류에서Dev

CRTP 메서드에서 파생 클래스에 대한 제약 조건을 사용할 수 있습니까?

분류에서Dev

포함 된 다른 파일에 클래스를 사용하기 위해 파일을 어떻게 포함시킬 수 있습니까?

분류에서Dev

파이썬에서 다른 클래스에 대한 포함 클래스를 어떻게 정의 할 수 있습니까?

분류에서Dev

생성자는 항상 클래스에서 선언 된 함수에 즉시 액세스 할 수 있습니까?

분류에서Dev

클래스의 특정 멤버 메서드를 포함 할 수 있습니까?

분류에서Dev

다른 포함 파일에서 포함 된 파일의 변수를 사용할 수 있습니까?

분류에서Dev

포함 된 모듈 에서처럼 인스턴스 메서드를 직접 호출 할 수 있습니까?

분류에서Dev

클래스의 모든 일반 속성에 대해 메서드를 호출 할 수 있습니까?

분류에서Dev

포함 된 소스 코드를 표시 할 수 있습니까?

분류에서Dev

Angular.js의 ng-class에서 대시가 포함 된 클래스를 어떻게 사용할 수 있습니까?

분류에서Dev

kubeadm 도구로 생성 된 클러스터에서 포드에 대한 외부로드 밸런서를 생성 할 수 있습니까?

분류에서Dev

인터페이스에서 파생 된 각 클래스의 이름을 지정할 수 있습니까?

분류에서Dev

JavaFX : 포함 된 노드에 액세스 할 수 있습니까?

분류에서Dev

링크 된 소스 파일에 대해 Eclipse에서 javadoc을 생성 할 수 없습니다.

분류에서Dev

유형 또는 클래스에 대해 오버로드 된 operator <<가 있는지 확인할 수 있습니까?

분류에서Dev

Scala Trait은 파생 된 toString 케이스 클래스를 어떻게 재정의 할 수 있습니까?

분류에서Dev

제한된 유형에 대해서만 클래스를 확장 할 수 있습니까?

분류에서Dev

내가 어떻게 JRuby에서의 컴파일 된 자바 클래스를로드 할 수 있습니까?

분류에서Dev

스레드 생성자에서 발생하는 것과 같은 다른 함수에 클래스 메서드를 어떻게 전달할 수 있습니까?

분류에서Dev

PHP에서 die ()와 같은 것을 통해 포함 된 파일을 종료 할 수 있습니까?

Related 관련 기사

  1. 1

    기본 클래스 개체에 대한 파생 클래스 포인터는 파생 클래스의 메서드를 어떻게 호출 할 수 있습니까?

  2. 2

    기본 클래스 개체에 대한 파생 클래스 포인터는 파생 클래스의 메서드를 어떻게 호출 할 수 있습니까?

  3. 3

    파생 클래스에 추가 메서드와 멤버가 포함 된 경우 기본 클래스에서 파생 클래스로 static_cast를 수행 할 수 있습니까?

  4. 4

    파이 게임의 같은 클래스에있는 다른 메서드에 의해 생성 된 속성을 메서드에 부여 할 수 있습니까?

  5. 5

    Domino Designer에서 Java 코드에 대해 생성 된 클래스 파일을 어떻게 볼 수 있습니까?

  6. 6

    함수 분포에 대해 mean 및 std dev를 반환하는 일반적인 파이썬 클래스 메서드를 어떻게 만들 수 있습니까?

  7. 7

    Ruby : 클래스 만 포함 된 파일을 '요구'할 수 있습니까?

  8. 8

    파생 클래스에서 슈퍼 클래스의 공용 메서드를 @Override 할 수 있습니까?

  9. 9

    기본 클래스에서 파생 클래스 함수를 어떻게 친구 할 수 있습니까?

  10. 10

    CRTP 메서드에서 파생 클래스에 대한 제약 조건을 사용할 수 있습니까?

  11. 11

    포함 된 다른 파일에 클래스를 사용하기 위해 파일을 어떻게 포함시킬 수 있습니까?

  12. 12

    파이썬에서 다른 클래스에 대한 포함 클래스를 어떻게 정의 할 수 있습니까?

  13. 13

    생성자는 항상 클래스에서 선언 된 함수에 즉시 액세스 할 수 있습니까?

  14. 14

    클래스의 특정 멤버 메서드를 포함 할 수 있습니까?

  15. 15

    다른 포함 파일에서 포함 된 파일의 변수를 사용할 수 있습니까?

  16. 16

    포함 된 모듈 에서처럼 인스턴스 메서드를 직접 호출 할 수 있습니까?

  17. 17

    클래스의 모든 일반 속성에 대해 메서드를 호출 할 수 있습니까?

  18. 18

    포함 된 소스 코드를 표시 할 수 있습니까?

  19. 19

    Angular.js의 ng-class에서 대시가 포함 된 클래스를 어떻게 사용할 수 있습니까?

  20. 20

    kubeadm 도구로 생성 된 클러스터에서 포드에 대한 외부로드 밸런서를 생성 할 수 있습니까?

  21. 21

    인터페이스에서 파생 된 각 클래스의 이름을 지정할 수 있습니까?

  22. 22

    JavaFX : 포함 된 노드에 액세스 할 수 있습니까?

  23. 23

    링크 된 소스 파일에 대해 Eclipse에서 javadoc을 생성 할 수 없습니다.

  24. 24

    유형 또는 클래스에 대해 오버로드 된 operator <<가 있는지 확인할 수 있습니까?

  25. 25

    Scala Trait은 파생 된 toString 케이스 클래스를 어떻게 재정의 할 수 있습니까?

  26. 26

    제한된 유형에 대해서만 클래스를 확장 할 수 있습니까?

  27. 27

    내가 어떻게 JRuby에서의 컴파일 된 자바 클래스를로드 할 수 있습니까?

  28. 28

    스레드 생성자에서 발생하는 것과 같은 다른 함수에 클래스 메서드를 어떻게 전달할 수 있습니까?

  29. 29

    PHP에서 die ()와 같은 것을 통해 포함 된 파일을 종료 할 수 있습니까?

뜨겁다태그

보관