2016-10-05 3 views
0

Ich bin neu in QT und versuche, mich selbst zu unterrichten.QT Creator - 'QGraphicsScene' nennt keinen Typ

Folgende Beispiele/Tutorials kam ich zu diesem Code.

Der Zweck ist die Erstellung einer einfachen Schnittstelle, die eine Anmeldung ermöglicht.

Mein Fehler:

mainwindow.h:22: error: 'QGraphicsScene' does not name a type 
    QGraphicsScene *scene; 

ich keine Lösung, sondern nur erwähnt Entfernung des Objekts von der UI und mit this statt ui->graphicsView gefunden haben, wenn die QGraphicsScene instanziieren.

Was fehlt mir?

Headers/mainwindow.h

#ifndef MAINWINDOW_H 
#define MAINWINDOW_H 

#include <QMainWindow> 
#include <QtCore> 
#include <QtGui> 

namespace Ui { 
class MainWindow; 
} 

class MainWindow : public QMainWindow 
{ 
    Q_OBJECT 

public: 
    explicit MainWindow(QWidget *parent = 0); 
    ~MainWindow(); 

private: 
    Ui::MainWindow *ui; 
    QGraphicsScene *scene; 
}; 

#endif // MAINWINDOW_H 

Sources/mainwindow.cpp

#include "mainwindow.h" 
//#include "ui_mainwindow.h" 

MainWindow::MainWindow(QWidget *parent) : 
    QMainWindow(parent), 
    ui(new Ui::MainWindow) 
{ 
    ui->setupUi(this); 
    scene = new QGraphicsScene(ui->graphicsView); 
    scene->setSceneRect(ui->graphicsView->rect()); 
    ui->graphicsView->setScene(scene); 
    ui->graphicsView->setFixedSize(400,400); 
    QPixmap pixmap("res/logo/logo-black.png"); 
    scene->addPixmap(pixmap); 
    ui->graphicsView->show(); 
} 

MainWindow::~MainWindow() 
{ 
    delete ui; 
} 

Sources/main.cpp

#include "mainwindow.h" 
#include <QApplication> 

int main(int argc, char *argv[]) 
{ 
    QApplication a(argc, argv); 
    MainWindow w; 
    w.show(); 

    return a.exec(); 
} 

Formulare/mainwindows.ui

<?xml version="1.0" encoding="UTF-8"?> 
<ui version="4.0"> 
<class>MainWindow</class> 
<widget class="QMainWindow" name="MainWindow"> 
    <property name="geometry"> 
    <rect> 
    <x>0</x> 
    <y>0</y> 
    <width>283</width> 
    <height>415</height> 
    </rect> 
    </property> 
    <property name="windowTitle"> 
    <string>MainWindow</string> 
    </property> 
    <widget class="QWidget" name="centralWidget"> 
    <widget class="QLineEdit" name="lineEdit"> 
    <property name="geometry"> 
    <rect> 
     <x>120</x> 
     <y>130</y> 
     <width>141</width> 
     <height>22</height> 
    </rect> 
    </property> 
    </widget> 
    <widget class="QLineEdit" name="lineEdit_2"> 
    <property name="geometry"> 
    <rect> 
     <x>120</x> 
     <y>170</y> 
     <width>141</width> 
     <height>22</height> 
    </rect> 
    </property> 
    </widget> 
    <widget class="QPushButton" name="pushButton"> 
    <property name="geometry"> 
    <rect> 
     <x>90</x> 
     <y>250</y> 
     <width>91</width> 
     <height>31</height> 
    </rect> 
    </property> 
    <property name="text"> 
    <string>Login</string> 
    </property> 
    </widget> 
    <widget class="QCheckBox" name="checkBox"> 
    <property name="geometry"> 
    <rect> 
     <x>90</x> 
     <y>220</y> 
     <width>101</width> 
     <height>20</height> 
    </rect> 
    </property> 
    <property name="text"> 
    <string>Remeber Me</string> 
    </property> 
    </widget> 
    <widget class="QLabel" name="label"> 
    <property name="geometry"> 
    <rect> 
     <x>20</x> 
     <y>130</y> 
     <width>59</width> 
     <height>14</height> 
    </rect> 
    </property> 
    <property name="text"> 
    <string>Email</string> 
    </property> 
    </widget> 
    <widget class="QLabel" name="label_2"> 
    <property name="geometry"> 
    <rect> 
     <x>20</x> 
     <y>170</y> 
     <width>59</width> 
     <height>14</height> 
    </rect> 
    </property> 
    <property name="text"> 
    <string>Password</string> 
    </property> 
    </widget> 
    <widget class="QPushButton" name="pushButton_2"> 
    <property name="geometry"> 
    <rect> 
     <x>96</x> 
     <y>310</y> 
     <width>80</width> 
     <height>22</height> 
    </rect> 
    </property> 
    <property name="text"> 
    <string>Register</string> 
    </property> 
    </widget> 
    <widget class="QGraphicsView" name="graphicsView"> 
    <property name="geometry"> 
    <rect> 
     <x>80</x> 
     <y>0</y> 
     <width>121</width> 
     <height>111</height> 
    </rect> 
    </property> 
    <property name="autoFillBackground"> 
    <bool>false</bool> 
    </property> 
    </widget> 
    </widget> 
    <widget class="QMenuBar" name="menuBar"> 
    <property name="geometry"> 
    <rect> 
    <x>0</x> 
    <y>0</y> 
    <width>283</width> 
    <height>19</height> 
    </rect> 
    </property> 
    </widget> 
    <widget class="QToolBar" name="mainToolBar"> 
    <attribute name="toolBarArea"> 
    <enum>TopToolBarArea</enum> 
    </attribute> 
    <attribute name="toolBarBreak"> 
    <bool>false</bool> 
    </attribute> 
    </widget> 
    <widget class="QStatusBar" name="statusBar"/> 
</widget> 
<layoutdefault spacing="6" margin="11"/> 
<resources/> 
<connections/> 
</ui> 

UPDATE

  • uncommenting: #include "ui_mainwindow.h" in Sources/mainwindow.cpp

Grund, den ich nicht ui_mainwindow.h in meinem Projektverzeichnis sehen war, so zu denken es ist ein unnötiger Einschluss.

  • Hinzufügen von #include <QGraphicsScene> in Headers/mainwindow.h

von documentation page Gefunden - eher ein "was passiert, wenn ich das hinzufügen" versuchen, hatte die Idee, dass <QtGui> die <QGraphicsScene> enthalten

Danke

Antwort

2

müssen Sie einbeziehen die folgenden:

#include <QGraphicsScene> 

als here angegeben

0

Du einschließlich unnötige Header und ohne notwendige diejenigen. Um das Widgets-Modul zu verwenden, müssen Sie nur #include <QtWidgets>. Die Datei sollte wie folgt beginnen:

#ifndef MAINWINDOW_H 
#define MAINWINDOW_H 

#include <QtWidgets> 

namespace Ui { 
    ...