1
我想在MainWindow中創建一個QGraphicScene(具有相應的視圖)。 場景是在一個單獨的類(一個子窗口小部件到主窗口)中定義的。在主窗口中打開一個QGraphicScene子窗口小部件
開放式動作效果很好,我可以打開每張圖片,但它們總是在新的 窗口中打開,而不是在MainWindow中打開。
當我在子窗口小部件中創建一個標籤(或左右)時,它會在主窗口中正確顯示。所以問題似乎是QGraphicScene或QGraphicView。
主窗口:
MainWindow::MainWindow()
{
QWidget *widget = new QWidget;
setCentralWidget(widget);
PictureArea = new picturearea(this);
QHBoxLayout *HLayout = new QHBoxLayout(this);
HLayout->addWidget(PictureArea,1);
widget->setLayout(HLayout);
createActions();
createMenus();
this->setMinimumSize(800,600);
this->resize(800,600);
}
...
void MainWindow::open()
{
QString fileName = QFileDialog::getOpenFileName(this, tr("Open Image"),
QDir::currentPath(), tr("Image Files (*.png *.jpg)"));
if (!fileName.isEmpty())
{
QImage image(fileName);
if (image.isNull())
{
QMessageBox::information(this, tr("Image Viewer"),
tr("Cannot load %1.").arg(fileName));
return;
}
//transfer to child widget, guess no mistakes so far
PictureArea->setPicture(image);
}
}
picturearea:
picturearea::picturearea(QWidget *parent) : QWidget(parent)
{
}
void picturearea::setPicture(QImage image)
{
QGraphicsScene* scene = new QGraphicsScene();
QGraphicsView* view = new QGraphicsView(scene);
QGraphicsPixmapItem* item =
new QGraphicsPixmapItem(QPixmap::fromImage(image));
scene->addItem(item);
view->show();
}
我怎樣才能創建主窗口中,而不是在一個單獨的窗口中的情景嗎?我使用的是QT 4.7.4,Windows7 64bit。
它的工作原理:) 非常感謝。這是我想要的。 男人......當然,一個佈局。我很愚蠢^^ – Kyrill