Я пытаюсь открыть сцену QgraphicsView вне класса. Обычно я могу это сделать, когда создаю класс, полученный из QGraohicsView, но этот класс является MainWindow, который происходит из QMainWIndow, и я могу расширить его QGraphicsView, потому что есть конфликт, когда вы вызываете метод .show() в качестве компилятора не знает, какой из них выбрать.Доступ за пределы класса
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{}
Так я создаю новый экземпляр QGraphicsView и обнародует его, а также QGraphicsScene и обнародует его.
Тогда во внешнем классе
extern MainWindow * mainwindow
Но когда я пытаюсь получить доступ к нему, и я получаю неопределенную ссылку ошибку.
mainwindow->view->scene()->addItem(item); or
mainwindow->mainwindow.scene->addItem(item);
Ни один из них не работает. Я знаю его разрушающую инкапсуляцию, но в этом конкретном случае нет другого пути.
** Что я пытаюсь сделать, это открыть сцену QgraphicsView вне ее класса?
** MainWindow имеет общие переменные
QGraphicsScene *scene;
QGraphicsView * view;
В mainwindow.cpp
scene = new QGraphicsScene(this);
view = new QGraphicsView(scene);
view.show();
множественное наследование. Одна из nastinesses в C++. – Olaf
Извините, я не хотел добавлять c, habbits :( –
Скажите нам, какую проблему вы пытаетесь решить. Не спрашивайте, как работать с неработоспособными решениями - вы, очевидно, уже знаете, что они не работают. Понятно, что 'mainwindow-> view' не будет работать, потому что ваш класс' MainWindow' не имеет члена по этому имени. Сначала покажите реальный код! –