2011-04-25 8 views
3

QtCreator의 디자이너에서 C++/Qt로 인터페이스를 작성하고 있습니다. 어떤 요소가 배경 이미지로 rect로 선택 되었습니까?Qt로 바둑판 식으로 그릴 방법

두 번째 질문 : 바둑판 무늬 이미지를 그리는 방법? 나는 크기와 이미지 (1 × 50)를 가지고 있고 그것을 부모 너비로 렌더링하려고합니다. 어떤 아이디어?


mTopMenuBg = QPixmap("images/top_menu_bg.png"); 
mTopMenuBrush = QBrush(mTopMenuBg); 
mTopMenuBrush.setStyle(Qt::TexturePattern); 
mTopMenuBrush.setTexture(mTopMenuBg); 

ui->graphicsView->setBackgroundBrush(mTopMenuBrush); 

QBrush : 당신은 그냥 이미지를 표시 할 경우 TexturePattern 잘못 사용하면

답변

7

당신은 QImage를 사용할 수 있습니다. 이미지 타일로 배경을 만들려면 QBrush을 QImage로 만드십시오. 그런 다음 QGraphicsScene을 사용하는 경우 bursh를 배경 브러시로 설정할 수 있습니다. 여기

은 타일 이미지 "document.png"와 전체 주 창을 채우는 예입니다

int main(int argc, char *argv[]) { 
    QApplication app(argc, argv); 
    QMainWindow *mainWindow = new QMainWindow(); 

    QGraphicsScene *scene = new QGraphicsScene(100, 100, 100, 100); 
    QGraphicsView *view = new QGraphicsView(scene); 
    mainWindow->setCentralWidget(view); 

    QImage *image = new QImage("document.png"); 
    if(image->isNull()) { 
     std::cout << "Failed to load the image." <<std::endl; 
    } else { 
     QBrush *brush = new QBrush(*image); 
     view->setBackgroundBrush(*brush); 
    } 

    mainWindow->show(); 
    return app.exec(); 
} 

결과 응용 프로그램 :
screen shot

또한, 당신이 사용할 수있는 것 같습니다 style sheets 위젯을 사용하고 위젯의 background-image 속성을 변경하십시오. QtDesigner에 스타일 시트와 이미지를 설정할 수 있기 때문에 QtDesigner와 더 많이 통합됩니다.

+0

죄송합니다. 내 창에서 해당 브러시로 정확한 직사각형을 채우는 방법을 이해할 수 없습니다. 그릴 곳은 어디입니까? 'paintEvent'에서? – Ockonal

+0

바둑판 식 이미지로 창을 채우고 싶습니까? 이미지를 넣으려는 위젯의 종류는 무엇입니까? –

+0

@ dusty-campbell 그래, 난 그냥 주전자 창에 타일 모양으로 약간의 직사각형을 채울 필요가있다. 나는 도우미 위젯을 사용하는 것에 관심이 없다. – Ockonal

관련 문제