
继承这下有了很大的改动
#define PHOTOSIZE 100
class datatable:public QTableWidget
{
    Q_OBJECT
public:
    datatable(QWidget * parent=0);
public slots:
    void myupdate(QMap<QString,info> *);
};
datatable::datatable(QWidget *parent):QTableWidget(parent)
{
    setColumnCount(8);
    setRowCount(0);
    QStringList headers;
    headers<<tr("Name")<<tr("Sex")<<tr("Telephone Number")<<tr("Email Address")<<tr("Birthday")<<tr("Address")<<tr("Photo")<<tr("Attachment");
    setHorizontalHeaderLabels(headers);
    horizontalHeader()->setStretchLastSection(true);
    setEditTriggers(QAbstractItemView::NoEditTriggers);
    setColumnWidth(2,150);
    setColumnWidth(3,150);
    setFixedSize(900,250);
}
void datatable::myupdate(QMap<QString, info> *data)
{
    setRowCount(data->size());
    int i=0;
    for(QMap<QString,info>::const_iterator myiter=data->begin();myiter!=data->end();++i,++myiter)
    {
        setItem(i,0,new QTableWidgetItem(myiter.key()));
        setItem(i,1,new QTableWidgetItem( myiter.value().Sex==0?tr("M"):tr("F")) );
        setItem(i,2,new QTableWidgetItem(myiter.value().Tel));
        setItem(i,3,new QTableWidgetItem(myiter.value().Email));
        setItem(i,4,new QTableWidgetItem(myiter.value().Birthday.toString(Qt::ISODate)));
        setItem(i,5,new QTableWidgetItem(myiter.value().Addr));
        QLabel *temp=new QLabel;
        temp->setFixedSize(PHOTOSIZE,PHOTOSIZE);
        temp->setPixmap(myiter.value().Photo);
        setCellWidget(i,6,temp);
        setItem(i,7,new QTableWidgetItem(myiter.value().Attach));
        setRowHeight(i,PHOTOSIZE);
    }
    resizeColumnsToContents();
}
但是发现表格会靠右显示

 怎么解决呢?