2

我在应用程序中有一个QTableView宽度QAbstractTableModel,我想让每列具有不同的宽度,并带有调整大小选项ui->tableView->horizontalHeader()->setSectionResizeMode (QHeaderView::Stretch);

在我的模型中,我这样做:

    class rangeModel : public QAbstractTableModel {
    //other code ....... 

    QVariant rangeModel::headerData(int section, Qt::Orientation orientation, int role) const
    {
        if (orientation != Qt::Horizontal) 
            return QVariant();
        if (role != Qt::DisplayRole && role != Qt::SizeHintRole) 
            return QVariant();
        if(role == Qt::SizeHintRole) 
        {
           switch (section) {
              case 0: return QSize(58, 20);
              case 1: return QSize(58, 20);
              case 2: return QSize(58, 20);
              case 3: return QSize(228, 20);
           }
        }
        switch (section) {
            case 0: return "PREFIXMIN";
            case 1: return "PREFIXMAX";
            case 2: return "VALUE";
            case 3: return "PROGRESS BAR";
            default: return QVariant();
        }
    }

所以我希望我的行的大小不同,但它不会发生,视图由于某种原因被忽略,而且即使没有选项QSizeHint它也不起作用。QHeaderView::Stretch如何使列和标题的大小不同?

4

1 回答 1

2

你可能想用这个:

 ui->tableView->resizeColumnsToContents();//resize all the columns based on longest data in every column. 

但是,如果您确实打算使用您在代码中使用的宽度值精确调整它们的大小:

ui->tableView->horizontalHeader()->setSectionResizeMode (QHeaderView::Stretch);
ui->tableView->setColumnWidth(0,58);
ui->tableView->setColumnWidth(1,58);
ui->tableView->setColumnWidth(2,58);
ui->tableView->setColumnWidth(3,228);
于 2016-02-03T15:04:24.503 回答