После того, как вы мне помогли, я пошел дальше в своем коде, и у меня проблема, которую я не понимаю.
в файле
//All includes
class ProjectWindow;
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private:
// GraphicsView 1
QGraphicsView view1;
QGraphicsScene scene1;
QGraphicsPixmapItem item1;
QGraphicsPixmapItem item2;
QString fileName;
// GraphicsView 2
QGraphicsScene scene2;
QGraphicsView view2;
QVector <QPointF> points;
qreal px,py;
QPointF point;
QPainter painter;
QGraphicsEllipseItem *ellipse;
public slots:
void openBrowser();
void drawcirc();
void drawCircle();
void runSnakes();
void displayResult();
};
#endif // MAINWINDOW_H
заголовка в файле .cpp
void MainWindow::displayResult()
{
scene2.removeItem(&item2); //removing a picture
scene2.addItem(&item2); // adding a picture
scene2.setSceneRect(scene2.itemsBoundingRect());
// Reading res.dat file and plot the contour
int m;
std::ifstream ifs2("final_contour.dat");
ifs2 >> m;
std::cout << m;
while (ifs2 >> px)
{
ifs2 >> py;
points.append(QPointF(py,px));
}
foreach(point, points)
ellipse = scene2.addEllipse(QRectF(point.y(), width-point.x(),1,1),QPen(Qt::red));
// Saving the final contour into a picture
QImage pixmap(width, width, QImage::Format_ARGB32_Premultiplied);
painter.begin(&pixmap);
painter.setRenderHint(QPainter::Antialiasing, false);
scene2.render(&painter);
painter.end();
pixmap.save("finalcontour.bmp", "BMP");
}
Я хочу удалить эллипс я добавить к сцене с RemoveItem() (для того, чтобы увидеть результаты Differents с меняющимися параметрами), поэтому мне нужно создать QGraphicsEllipseItem и рассказать на сцену addItem(), что я могу удалить позже элемент с помощью removeItem().
заголовочный файл
//All includes
class ProjectWindow;
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private:
// GraphicsView 1
QGraphicsView view1;
QGraphicsScene scene1;
QGraphicsPixmapItem item1;
QGraphicsPixmapItem item2;
QString fileName;
// GraphicsView 2
QGraphicsScene scene2;
QGraphicsView view2;
QVector <QPointF> points;
qreal px,py;
QPointF point;
QPainter painter;
QGraphicsEllipseItem ellipse; // The only line changed
public slots:
void openBrowser();
void drawcirc();
void drawCircle();
void runSnakes();
void displayResult();
};
#endif // MAINWINDOW_H
СРР файл
аннулируются MainWindow :: displayResult() {
scene2.removeItem(&item2); //removing a picture
scene2.addItem(&item2); // adding a picture
scene2.setSceneRect(scene2.itemsBoundingRect());
// Reading res.dat file and plot the contour
int m;
std::ifstream ifs2("final_contour.dat");
ifs2 >> m;
std::cout << m;
while (ifs2 >> px)
{
ifs2 >> py;
points.append(QPointF(py,px));
}
foreach(point, points)
ellipse.setRect(QRectF(point.y(), width-point.x(),1,1));
ellipse.setPen(QPen(Qt::red));
scene2.addItem(&ellipse);
// Saving the final contour into a picture
QImage pixmap(width, width, QImage::Format_ARGB32_Premultiplied);
painter.begin(&pixmap);
painter.setRenderHint(QPainter::Antialiasing, false);
scene2.render(&painter);
painter.end();
pixmap.save("finalcontour.bmp", "BMP");
}
Но изменения, как я хочу, чтобы добавить эллипс, то не отображая все точки, подобные этому, первым способом я определяю эллипс:
Но только один пункт, а не вектор точек, например:
Вы должны создать еще одну тему для второго вопроса, простота поможет лучше понять. –
Хорошо, я собираюсь изменить это. – alexandreMepage