Можете ли вы объяснить методы хранения данных программы с глобальным доступом?
Я нашел следующие ключевые слова:
– использование статического класса для хранения данных
– передача QList по значению
– передача Qlist по ссылке
– использование ключевого слова «друг»
но я не могу найти ни одного реального примера хранения глобального QList, как говорится, это плохой дизайн для использования глобальных переменных. Также упоминается, что использование указателей в QList — плохая идея из-за неявного совместного использования (?).
Итак, где я должен хранить свой Qlist для доступа к нему из другого класса в другом .cpp? Так что я:
главное окно.h
QList <SceneCard> sceneList;
QString mTitle;
public slots:
QString setValue()
{
return mTitle;
}
главное окно.cpp
MainWindow::AddScene()
{
sceneCard = new SceneCard(sNumber);
sceneList.append(sceneCard);
mTitle = "Nejat is right!"
}
void MainWindow::showSceneCard()
{
SceneDialog D;
connect(D,SIGNAL(getValue()),this,SLOT(setValue()));
D.exec();
}
сценадиалог.h
#ifndef SCENEDIALOG_H
#define SCENEDIALOG_H
#include <QDialog>
#include <QList>
namespace Ui {
class SceneDialog;
}
class SceneDialog : public QDialog
{
Q_OBJECT
public:
SceneDialog(QWidget *parent = 0);
~SceneDialog();
signals:
QString getValue();
private:
Ui::SceneDialog *ui;
QString myText;
};
сценадиалог.cpp
#include "scenedialog.h"
#include "ui_scenedialog.h"
#include <QDebug>
SceneDialog::SceneDialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::SceneDialog)
{
ui->setupUi(this);
myText = getValue();
qDebug() << myText; // myText is empty!!
}
QList
для этого. - person thuga   schedule 16.09.2014SceneDialog
, которая принимаетQList<SceneCard*>
в качестве параметра, и передайте ейsceneList
. Кстати, вроде должно бытьQList<SceneCard*>
в вашемmainwindow.h
. - person thuga   schedule 16.09.2014