2010-07-08 2 views
1

정사각형 셀 (체스 보드)이있는 8 * 8 테이블을 만들고 싶습니다. 이제 테이블을 만들 수있는 코드가 있지만 셀의 크기를 사각형 모양으로 조정하는 방법을 모릅니다.셀 높이와 Witdth 크기 조정 및 QTableWidget에서 이미지로드

또한 그림을 셀에 넣고 싶습니다. 어떻게해야합니까? 여기

내가 가지고있는 코드 :

#include <QtGui/QApplication> 
#include "mainwindow.h" 
#include <QHBoxLayout> 
#include <QTableWidget> 

class Table : public QWidget 
{ 
    public: 
    Table(QWidget *parent = 0); 

}; 


Table::Table(QWidget *parent) 
    : QWidget(parent) 
{ 
    QHBoxLayout *hbox = new QHBoxLayout(this); 

    QTableWidget *table = new QTableWidget(8 , 8 , this); 

    hbox->addWidget(table); 
    setLayout(hbox); 
} 



int main(int argc, char *argv[]) 
{ 
    QApplication a(argc, argv); 

    Table t; 

    t.show(); 


    return a.exec(); 
} 

편집 : 사람이 너무 셀의 배경으로 이미지를로드를 도와 줄 수 있다면

, 그것은 매우 감사하겠습니다! 이 코드를 사용하고 컴파일러가 오류를 생성하지는 않지만 프로그램이 실행되지 않습니다. 문제는 table->item(0,0)입니다. 먼저 초기화해야합니까? 세포 사각형 모양을 만들려면

QString fileName = "1.bmp"; 
QPixmap pic (fileName); 

QIcon icon (pic); 

table->item(0,0)->setIcon(icon); 
+0

재미있는 방법으로 체스 판을 칠하십시오 :) QGraphicsView를 사용하는 것이 좋습니다. –

+0

사실, GraphicsView는 오버 헤드가 더 클 것이지만 훨씬 더 유연합니다. 그것은 애니메이션과 다른 재미있는 것을 허용합니다. – Casey

답변

4

은 같은 것을 할 :

// set the default size, here i've set it to 20px by 20x 
    table->horizontalHeader()->setDefaultSectionSize(20); 
    table->verticalHeader()->setDefaultSectionSize(20); 
    // set the resize mode to fixed, so the user cannot change the height/width 
    table->horizontalHeader()->setResizeMode(QHeaderView::Fixed); 
    table->verticalHeader()->setResizeMode(QHeaderView::Fixed); 

편집 :은 이미지를 설정하여 QTableWidgetItem

1

검색 및 검색 이후의 아이콘 속성을 설정하려면 그리고 검색 .... 나는 마침내 대답을 얻었다. 먼저 QBrush 개체를 만들어서 QtableWidgetItem의 배경으로 설정 한 다음 table-> setItem !!!을 사용해야합니다.

QString fileName = "/1.bmp"; 
QPixmap pic (fileName); 

QBrush brush(pic); 

QTableWidgetItem* item = new QTableWidgetItem(); 
item->setBackground(brush); 

table->setItem(0,0,item);