Qt GRaphic
Verfasst: 2. April 2013 18:26
Hallo,
Ich bin gerade dabei Qt zuerlernen. Ich wollte in einem QGraphicView den zustand eines unsortierten Vectors(int) visualisieren und während der sortierung anschauen.
so wie in diesem video: http://www.youtube.com/watch?v=lyHB5kimryQ
Nur anders als im video möchte ich den Farbton entsprechend der Wertigkeit ändern.
Ich habe mit QT-Creator ein QGraphicView angelegt und beim click auf dem button soll eine zahlenarray sortiert werden, zuvor gebe ich es im graphicview aus:
Entweder verstehe ich das mit der scene falsch oder .. mit dem addLine füge ich doch ein neues Element in die scene ein oder? Wie kann ich zugriff auf die bereits erstellten elemente erhalten, damit ich dessen eigenschafften wie farbton und position manipulieren kann?
Mit besten Gruß
Ich bin gerade dabei Qt zuerlernen. Ich wollte in einem QGraphicView den zustand eines unsortierten Vectors(int) visualisieren und während der sortierung anschauen.
so wie in diesem video: http://www.youtube.com/watch?v=lyHB5kimryQ
Nur anders als im video möchte ich den Farbton entsprechend der Wertigkeit ändern.
Ich habe mit QT-Creator ein QGraphicView angelegt und beim click auf dem button soll eine zahlenarray sortiert werden, zuvor gebe ich es im graphicview aus:
Code: Alles auswählen
// der konstruktor
MainWindow::MainWindow(QWidget *parent) :QMainWindow(parent), ui(new Ui::MainWindow)
{
ui->setupUi(this);
scene = new QGraphicsScene(this);
ui->graphicsView->setScene(scene);
for(int i=0;i<256;i++) {
values[i] = irand(0,8096);
QPen blackPen(QColor(255*values[i]/8096,0,0,255));
blackPen.setWidth(1);
line[i] = scene->addLine(i,0,i,50,blackPen);
}
connect(ui->pushButton,SIGNAL(clicked()),this,SLOT(bubbleSort()));
}
Code: Alles auswählen
// der slot
void MainWindow::bubbleSort() {
int tmp;
QPen*pen;
for(int i=0; i<256; i++) {
for(int j=0; j<256; j++) {
if(values[i]<values[j]) {
tmp = values[i];
values[i]=values[j];
values[j]=tmp;
}
}
}
for(int i=0; i<256; i++) {
QPen blackPen(QColor(0,255*values[i]/8096,0,255));
blackPen.setWidth(1);
line[i] = scene->addLine(i,0,i,50,blackPen);
}
}
Mit besten Gruß