2013-05-17 66 views
3

我是新來的qt我在QTtableview內使用QStandardItemModel。QStandardItemModel&Qtableview

請建議,

  1. 如何更改行&列標題名稱。目前它顯示的是1,2,3,4
  2. 如何讓QStandardItemModel佔用完整的Qtableview。目前它顯示在左上角。


MainWindow::MainWindow(QWidget *parent) : 
    QMainWindow(parent), 
    ui(new Ui::MainWindow) 
{ 
    ui->setupUi(this); 

    model= new QStandardItemModel(4, 4); 
    for (int row = 0; row < 4; ++row) { 
     for (int column = 0; column < 4; ++column) { 
      QStandardItem *item = new QStandardItem(QString("row %0, column %1").arg(row).arg(column)); 
      model->setItem(row, column, item); 
     } 
    } 

    ui->tableView->setModel(model); 

} 

回答

0

使用setHorizo​​ntalHeaderLabels()和setVerticalHeaderLabels()或setHorizo​​ntalHeaderItem()和setVerticalHeaderItem()方法。

垂直標題是列名稱,水平標題是行名稱。

如果您想顯示比簡單文本(如圖標或彩色文本)更多的信息,setVerticalHeaderItem會很有用。

2

1>model->setHorizontalHeaderItem(0, new QStandardItem(tr("Time")));

2>像這樣:

for (int row = 0; row < 4; ++row) 
{ 
    QList<QStandardItem *> rowData; 
    rowData << new QStandardItem(QString("row %1, column %2").arg(row).arg(0)) 
    rowData << new QStandardItem(QString("row %1, column %2").arg(row).arg(1)) 
    rowData << new QStandardItem(QString("row %1, column %2").arg(row).arg(2)) 
    rowData << new QStandardItem(QString("row %1, column %2").arg(row).arg(3)) 
    model->appendRow(rowData); 
} 
0

1-有多種方式進入標頭的圖。我喜歡做這種方式:

QStandardItem *infoItem = new QStandardItem("Info"); 
infoItem ->setFont(heading); 
infoItem ->setToolTip("Scene Object Name and Type"); 

QStandardItem *fileStatus = new QStandardItem(); 
fileStatus->setIcon(QIcon(":/icons/fileStatus")); 
fileStatus->setToolTip("File Status displayed by ..."); 

QStandardItem *fileDirectory = new QStandardItem(); 
fileDirectory->setIcon(QIcon(":/icons/directory")); 
fileDirectory->setToolTip("File directory"); 

m_model->setHorizontalHeaderItem(0, infoItem); 
m_model->setHorizontalHeaderItem(1, fileStatus); 
m_model->setHorizontalHeaderItem(2, fileDirectory); 

2 - 您可以最後一節設置拉伸爲true。這將確保每次調整表格本身時,最後一列都會延伸以填充表格。

myView->horizontalHeader()->setStretchLastSection(true); 

或者您可以在您想要的列上設置足夠的寬度以填充表格。要做到這一點,請確保setStretchLastSection設置爲false。

myView->horizontalHeader()->setStretchLastSection(false); 
myView->horizontalHeader()->setResizeMode(yourDesiredCol, QHeaderView::Stretch);