2016-04-01 12 views
0

カスタムQHeaderViewを設定して、水平ヘッダーのテキストを回転したいとします。私は本当に私が翻訳して何をしたか理解していないこのカスタムQHeaderViewでモデルデータを読む

class QHeaderViewR : public QHeaderView 
{ 
public: 
    QHeaderViewR():QHeaderView(Qt::Horizontal) 
    {} 

    void paintSection(QPainter * painter, const QRect & rect, int logicalIndex) const 
    { 
     QPen pen(Qt::black); 
     painter->setPen(pen); 
     painter->translate(rect.width() * logicalIndex, (logicalIndex * -18) -18); 
     painter->rotate(90); 
     painter->drawText(rect,"header"); 
    } 
}; 

をした瞬間のためにQStandarItemModel

で働いています。私はちょうど列に一致するまで試行錯誤しました。それでも、それは完璧なことではなく、明白な理由がなくてもテキストをカットします。テキストを列に一致させて切り捨てないようにするにはどうすればよいですか?

"pic of the mismatch and cut text"

他の事は、私はちょうどすべての列の「見出し」を書きたくないということです。見られることだモデルがHorizo​​ntalHeaderItemは、列ごとに割り当てられていると私は、私はそれを解決し

+0

に使用する、モデルにヘッダーを設定するには、私は、テキストを一致させる方法を考え出しました。 Damn rotateは、ドキュメントが示したよりもはるかに複雑でした。私はVoidRealmのビデオのおかげでそれを理解した。まだ私はモデルからデータを取得する方法を考え出していません。 – Coyoteazul

答えて

0

あなたの助けを事前にこれらのヘッダの代わりに

感謝を示したいと思います。コンストラクタのパラメータとしてQStringListを追加し、論理インデックスを使用して反復処理しました。これは最終結果です

class QHeaderViewR : public QHeaderView 
{ 
QStringList heads; 

public: 
    QHeaderViewR(QStringList _heads):QHeaderView(Qt::Horizontal) 
    { 

     heads = _heads; 
    } 

    void paintSection(QPainter * painter, const QRect & rect, int logicalIndex) const 
    { 


     QPen pen(Qt::black); 
     painter->setPen(pen); 

     painter->rotate(90); 
     painter->translate(0,-rect.width()+1); 

     QRect copy = rect; 

     copy.setWidth(rect.height()); 
     copy.setHeight(rect.width()); 
     copy.moveTo(0,-this->sectionPosition(logicalIndex)); 

     if (logicalIndex == 0) 
     { 
      copy.setHeight(rect.width()-1); 
     } 

     painter->drawText(copy, " " + heads.at(logicalIndex)); 
     painter->drawRect(copy); 
    } 
}; 
0

QHeaderViewはビューのみであるため、モデルから表示するデータを取得する必要があります。 base implementation in QHeaderViewに似ので

、:

QString text = model()->headerData(logicalIndex, orientation(), Qt::DisplayRole).toString(); 

QStandardItemModel::setHorizontalHeaderLabels(const QStringList &labels) 
関連する問題