2010-07-08 63 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虽然。 – 2010-07-08 21:54:18

+0

事实上,GraphicsView的开销会更大,但会更灵活。这将允许动画和其他有趣的事情。 – Casey 2010-07-08 21:59:33

回答

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); 
相关问题