我想在Qt中创建一个简单的Mandlebrot查看器,我有一个QGraphicsScene的主窗口,我生成带图片的QImage,然后我有一些按钮,我会喜欢用于导航图像(移动,缩放等)如何更新QMainWindow中的QGraphicsScene
我可以得到最初的图像出现,但我不知道如何告诉它改变任何坐标后重新渲染。 对于我的生活,我无法弄清楚如何刷新QMainWindow,或者从MainWindow中删除QGraphicsScene并进行调用来渲染它。
QImage renderImage(//loads in global variables)
{
//calculates the image and returns a QImage
}
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
QGraphicsScene *graphic = new QGraphicsScene(this);
graphic->addPixmap(QPixmap::fromImage(renderImage()));
ui->graphicsView->setScene(graphic);
}
void MainWindow::on_Left_clicked()
{
// Changes global variables and try to rerender the scene.
update(); //does nothing
}
UPDATE:解决了! 非常感谢你的帮助,这非常有帮助。我是Qt的新手,所以无法找出循环所在的位置,以便更新内容。我添加了您建议的代码,并且完美运行。谢谢:)
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
QGraphicsScene *graphic = new QGraphicsScene(this);
pixmap_item = graphic->addPixmap(QPixmap::fromImage(renderImage()));
ui->graphicsView->setScene(graphic);
}
void MainWindow::on_Left_clicked()
{
// Changes global variables and try to rerender the scene.
centerR -= 0.1;
pixmap_item->setPixmap(QPixmap::fromImage(renderImage()));
}
他有一个QGraphicsView。它在UI定义中,并在构造函数中正确设置。 – goug