QTCreator extern不在特定的PC上工作

时间:2017-03-08 19:14:59

标签: c++ qt qt-creator

您好我正在使用QT Creator开展锦标赛创建者计划。我在午休期间一直在努力工作,它运行良好,但是我已把它带回家,让它在本周末完成,但它不起作用。

我得到的错误是

F:\Documents\Coding\TournamentOrganiser\startscreen.cpp:-1: error: multiple
definition of `StartScreen::StartScreen(QWidget*)'

我实际上只将文件夹放在USB上,将其复制到我的桌面上然后运行它,当它在家里工作正常时就会发生这种情况。

我认为这是某种QT Creator配置设置,但以防这些是涉及问题的文件。如果有人可以帮我解决这个问题,我将非常感激,因为我需要在星期六的桌面上工作,因为我需要使用该应用程序。

template <typename T> using shp = std::shared_ptr<T>;

globals.h

#ifndef GLOBALS_H
#define GLOBALS_H

#include "startscreen.h"
#include "tournamentcreator.h"
#include "player.h"
#include <memory>
#include "util.h"
#include "matchups.h"

namespace globals{
  extern shp<StartScreen> g_StartScreen;
  extern shp<TournamentCreator> g_TournamentCreator;
  extern shp<std::vector<Player>> g_PlayerData;
  extern shp<MatchUps> g_MatchUps;
}

#endif // GLOBALS_H

的main.cpp

#include "startscreen.h"
#include "tournamentcreator.h"
#include "matchups.h"
#include <QApplication>
#include "util.h"

namespace globals{
  shp<StartScreen> g_StartScreen;
  shp<TournamentCreator> g_TournamentCreator;
  shp<std::vector<Player>> g_PlayerData;
  shp<MatchUps> g_MatchUps;
}

int main(int argc, char *argv[])
{
  QApplication a(argc, argv);
  globals::g_StartScreen = std::make_shared<StartScreen>();
  globals::g_TournamentCreator = std::make_shared<TournamentCreator>();
  globals::g_PlayerData = std::make_shared<std::vector<Player>>();
  globals::g_MatchUps = std::make_shared<MatchUps>();

  globals::g_StartScreen->show();

  return a.exec();
}

startscreen.h

#ifndef STARTSCREEN_H
#define STARTSCREEN_H

#include <QWidget>

namespace Ui {
class StartScreen;
}

class StartScreen : public QWidget
{
  Q_OBJECT

public:
  explicit StartScreen(QWidget *parent = 0);
  ~StartScreen();
private slots:
  void on_newEventButton_clicked();

private:
  Ui::StartScreen *ui;
};

#endif // STARTSCREEN_H

startscreen.cpp

#include "startscreen.h"
#include "ui_startscreen.h"
#include "globals.h"

StartScreen::StartScreen(QWidget *parent) :
  QWidget(parent),
  ui(new Ui::StartScreen)
{
  ui->setupUi(this);
}

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

void StartScreen::on_newEventButton_clicked(){
  this->hide();
  globals::g_TournamentCreator->show();
}

0 个答案:

没有答案