間違いなくすべてのドット/マークにQGraphicsItem
を使用しないでください。良い方法は、スペクトログラムを表すQPixmap
を生成し、このピックスマップをQGraphicsScene
に1つの項目として配置することです(QGraphicsPixmapItem
を使用できます)。
QPixmap
に描画する場合は、QPainter
を使用してください。たぶん少しの例では、有用であろう:
const int spectrWidth = 1000;
const int spectrHeight = 500;
QPixmap spectrPixmap(spectrWidth, spectrHeight);
QPainter p(&spectrPixmap);
for (int ir = 0; ir < spectrHeight; ir++)
{
for (int ic = 0; ic < spectrWidth; ic++)
{
double data = getDataForCoordinates(ic, ir); // your function
QColor color = getColorForData(data); // your function
p.setPen(color);
p.drawPoint(ic, ir);
}
}
getDataForCoordinates()
とgetColorForData()
はそれが仕事ができる方法を示す一例に過ぎ関数です。おそらくデータとその色を取得する方法が異なるでしょう。
EDIT
しかし、あなただけのQWidget::paintEvent()
にQWidget
に直接ペイントすると、まったくQGraphicsView
/QGraphicScene
を使用していないだろうでも簡単によりズーム/パン機能を必要としない場合。
QPixmapの代わりに 'QImage'を使用できますか? –
はい、できますが、なぜですか? ... QPixmap' *は、画面上に画像を表示するように設計されています。* ...(Qtドキュメントから) – Tomas