【问题标题】:How to set text alignment on a column of QTableView programmatically?如何以编程方式在 QTableView 的列上设置文本对齐方式?
【发布时间】:2011-06-24 22:32:42
【问题描述】:

到目前为止,我发现的唯一解决方案是继承 QItemDelegate 并在 paint() 函数中实现我的对齐规则。真的是最简单的方法吗?

我正在使用 C++ API。

【问题讨论】:

    标签: qt qt4


    【解决方案1】:

    子类化QItemDelegate 的替代方法是子类化您的模型并覆盖data() 方法。

    QVariant MyModel::data(const QModelIndex& index, int role) const {
        if (index.column() == yourCellIndex && role == Qt::TextAlignmentRole) {
            return Qt::AlignLeft;
        } else {
            return QVariant();
        }
    }
    

    【讨论】:

      【解决方案2】:
      QSqlTableModel *model2= new QSqlTableModel();
      
      model2->setTable("Save");
      model2->select();
      
      QSortFilterProxyModel *proxy1=new QSortFilterProxyModel();
      proxy1->setSourceModel(model2);
      
      QStandardItemModel *modd=new QStandardItemModel();
      
      for (int z =0; z< proxy1->rowCount(); ++z)
         {
          for (int y =0; y< proxy1->columnCount(); ++y)
              {
              QStandardItem *item= new QStandardItem();
              item->setText(proxy1->index(z,y).data().toString());
              item->setTextAlignment(Qt::AlignCenter);
              modd->setItem(z,y,item);
      
              }
        }
      ui->tableView->setModel(modd);
      

      【讨论】:

      • 请不要只是转储你的代码,解释你的思路。谢谢。
      • `item->setTextAlignment(Qt::AlignCenter);适合我。
      • item->setTextAlignment() 对我不起作用:(
      【解决方案3】:

      以下作品适合我:
      http://doc.qt.io/qt-5/qstandarditem.html#setTextAlignment

      void MainWindow::fillTable()
      {
          sudukoItem->setText( "qq" );
          sudukoItem->setTextAlignment(Qt::AlignCenter);
      
          sudukoModel->appendRow( sudukoItem );
          sudukoTable->setModel( sudukoModel );
      
          sudukoTable->setRowHeight( ( sudukoModel->rowCount() - 1 ), 100 );
          sudukoTable->setColumnWidth( ( sudukoModel->columnCount() - 1 ), 100 );
      }
      

      地点:

      QTableView*         sudukoTable;
      QStandardItemModel* sudukoModel;
      QModelIndex*        modelIndex;
      
      QStandardItem*      sudukoItem;
      

      归功于此评论:How to set text alignment on a column of QTableView programmatically?

      `item->setTextAlignment(Qt::AlignCenter);为我工作得很好。 – 拉塔

      【讨论】:

        猜你喜欢
        • 2018-08-12
        • 2014-08-12
        • 1970-01-01
        • 2012-01-20
        • 1970-01-01
        • 2018-11-05
        • 1970-01-01
        • 2013-02-07
        • 2016-03-10
        相关资源
        最近更新 更多