1
我是一名QT新手,並試圖玩弄應用程序。我剛用一些按鈕編寫了一個非常簡單的應用程序。主要想法是在我的應用程序中有一個小的「標誌」。 LATER我也想添加一些背景圖片。將QGraphicsView添加到QBoxLayout
我已經編寫了一個示例應用程序的網格佈局,其中是一個QBoxLayout組合我的按鈕。
正如你可以在我的代碼中看到的,我試圖在每個地方添加Logo。當我將它添加到main.cpp中時,我有兩個視圖,一個顯示按鈕,另一個顯示我的標誌。當然,我不想要這個。所以我嘗試添加它mainwindow.cpp但在這種情況下,我沒有看到我的標誌出現在任何地方都:(
請告知
這裏是代碼:
的main.cpp :
#include <QtGui/QApplication>
#include <QGraphicsScene>
#include <QGraphicsView>
#include <QGraphicsPixmapItem>
#include "mainwindow.h"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Window window;
window.show();
/*
QGraphicsScene scene;
QGraphicsView view(&scene);
QGraphicsPixmapItem item(QPixmap("/home/marc/Desktop/Niranjana/Images/logo.9.png"));
scene.addItem(&item);
view.show();
*/
return a.exec();
}
mainwindow.h
#ifndef WINDOW_H
#define WINDOW_H
#include <QWidget>
#include <QRadioButton>
class QGroupBox;
class Window : public QWidget
{
Q_OBJECT
public:
Window(QWidget *parent = 0);
void onCheck_remote(int flag);
void onCheck_local(int flag);
private:
QRadioButton *button_local;
QRadioButton *button_remote;
QGroupBox *createPushButtonGroup();
};
#endif
mainwindow.cpp
#include <QtGui>
#include <QGraphicsScene>
#include <QGraphicsView>
#include <QGraphicsPixmapItem>
#include "mainwindow.h"
Window::Window(QWidget *parent)
: QWidget(parent)
{
QGridLayout *grid = new QGridLayout;
QGraphicsScene scene;
QGraphicsPixmapItem item(QPixmap("/home/test/logo.png"));
QGraphicsView view(&scene);
scene.addItem(&item);
view.show();
grid->addWidget(view.viewport(), 1, 1);
grid->addWidget(createPushButtonGroup(), 2, 1);
setLayout(grid);
setWindowTitle(tr("My App"));
resize(480, 420);
}
QGroupBox *Window::createPushButtonGroup()
{
QGroupBox *groupBox = new QGroupBox();
/*
QGraphicsScene scene;
QGraphicsPixmapItem item(QPixmap("/home/marc/Desktop/Niranjana/Images/logo.9.png"));
QGraphicsView view(&scene);
scene.addItem(&item);
scene.setBackgroundBrush(Qt::white);
view.show();
*/
QPushButton *button1 = new QPushButton(tr("&Start"));
QPushButton *button2 = new QPushButton(tr("&Stop"));
button_local = new QRadioButton(tr("&with power"));
button_remote = new QRadioButton(tr("without power"));
button_local->setChecked(1);
QVBoxLayout *vbox = new QVBoxLayout;
// vbox->addSpacing(10);
// vbox->addWidget(view.viewport());
//vbox->addSpacing(10);
vbox->addWidget(button1);
vbox->addSpacing(10);
vbox->addWidget(button2);
vbox->addSpacing(50);
vbox->addWidget(button_local);
vbox->addWidget(button_remote);
vbox->addStretch(1);
groupBox->setLayout(vbox);
return groupBox;
}
當我這樣做,它抱怨:沒有匹配函數來調用QGridlayout :: addWidget(QGraphicsView&,int,int)'所以我改變它爲grid-> addWidget(&view,1,1),但是,沒有圖像獲取顯示:( – user489152 2012-03-07 10:42:06
確實。答案更新。 – Koying 2012-03-07 10:57:24
可能是因爲你查看堆棧並在構造函數執行後被銷燬,請嘗試將GraphicsView轉換爲指針並查看。 – Kunal 2012-03-07 11:00:14