2016-10-05 14 views
0

Я новичок в QT, пытаясь научить себя.Создатель QT - «QGraphicsScene» не называет тип

Следующие примеры/учебники Я пришел к этому коду.

Целью является создание простого интерфейса, позволяющего войти в систему.

Моя ошибка:

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

Я не нашел решение, но только упоминание об удалении объекта из пользовательского интерфейса и использования this вместо ui->graphicsView при инстанцировании QGraphicsScene.

Что мне не хватает?

Заголовки/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 

Источники/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; 
} 

Источники/main.cpp

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

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

    return a.exec(); 
} 

Формы/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

  • раскомментировав: #include "ui_mainwindow.h" в Sources/mainwindow.cpp

Причина я не видел ui_mainwindow.h в моем каталоге проекта, таким образом, мышление это ненужное включение.

  • Добавление #include <QGraphicsScene> в Headers/mainwindow.h

Найдено от documentation page - больше "что будет, если я добавлю это" попытка, была идея, что <QtGui> включал <QGraphicsScene>

Спасибо

ответ

2

Вы должны включить следующее:

#include <QGraphicsScene> 

как указано here

0

Вы включая ненужные заголовки, а не в том числе необходимых. Чтобы использовать модуль виджетов, вам нужно всего лишь #include <QtWidgets>. Файл mainwindow.h должен начинаться следующим образом:

#ifndef MAINWINDOW_H 
#define MAINWINDOW_H 

#include <QtWidgets> 

namespace Ui { 
    ... 

 Смежные вопросы

  • Нет связанных вопросов^_^