2

アプリケーションにQTableViewQAbstractTableModelがあり、サイズ変更オプションを使用して各列を異なる幅にしたい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 に答える