
继承这下有了很大的改动
#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();
}
但是发现表格会靠右显示

怎么解决呢?