0

QList<QRadioButton *> colorListmainwindow.h で宣言されているものに、wager.cppからアクセスできるようにする必要があります。

ここで私の現在の試みを示します。

メインウィンドウ.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H


#include <QMainWindow>
#include <QPushButton>
#include <QTextEdit>
#include <QCheckBox>
#include <Qlist>
#include <QRadioButton>

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

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



    ~MainWindow();

private slots:
    void runButtonClicked();

private:
    Ui::MainWindow *ui;
    QPushButton *runButton;
        QTextEdit * runText;

    };

 QList<QRadioButton *> colorList; // where should i put this??


    #endif // MAINWINDOW_H

エラー: LNK2005: "class QList colorList" (?colorList@@3V?$QList@PAVQRadioButton@@@@A) は main.obj で既に定義されています

賭け.cpp

#include "wager.h"
#include "mainwindow.h"
#include "deck.h"

Wager::Wager()
{
}

void build_bet_lists()

{
for(int i=0;i<5;i++)
    {
        qDebug()<<colorList[i]->isChecked;

}
}

colorListはで定義されています

メインウィンドウ.cpp

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)

{

QRadioButton * street1BetBlack = new QRadioButton("Black");
QRadioButton * street2BetBlack = new QRadioButton("Black");
QRadioButton * street3BetBlack = new QRadioButton("Black");
QRadioButton * street4BetBlack = new QRadioButton("Black");
QRadioButton * street5BetBlack = new QRadioButton("Black");

QRadioButton * street1BetRed = new QRadioButton("Red");
QRadioButton * street2BetRed = new QRadioButton("Red");
QRadioButton * street3BetRed = new QRadioButton("Red");
QRadioButton * street4BetRed = new QRadioButton("Red");
QRadioButton * street5BetRed = new QRadioButton("Red");

QList<QRadioButton *> colorList;
colorList << street1BetBlack << street1BetRed << street2BetBlack << street2BetRed << street3BetBlack << street3BetRed << street4BetBlack << street4BetRed << street5BetBlack << street5BetRed ;

}
4

2 に答える 2

2

あなたがしたように、ヘッダーで宣言しますが、次のように宣言しますextern

extern QList<QRadioButton *> colorList; //declared

ヘッダーで「宣言」するだけでなく、CPP ファイルでも「定義」します。

QList<QRadioButton *> colorList; //defined

MainWindow コンストラクター内ではなく、グローバル スコープで定義します。

QList<QRadioButton *> colorList;

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)

{


QRadioButton * street1BetBlack = new QRadioButton("Black");
QRadioButton * street2BetBlack = new QRadioButton("Black");
QRadioButton * street3BetBlack = new QRadioButton("Black");
QRadioButton * street4BetBlack = new QRadioButton("Black");
QRadioButton * street5BetBlack = new QRadioButton("Black");

QRadioButton * street1BetRed = new QRadioButton("Red");
QRadioButton * street2BetRed = new QRadioButton("Red");
QRadioButton * street3BetRed = new QRadioButton("Red");
QRadioButton * street4BetRed = new QRadioButton("Red");
QRadioButton * street5BetRed = new QRadioButton("Red");

colorList << street1BetBlack << street1BetRed << street2BetBlack << street2BetRed << street3BetBlack << street3BetRed << street4BetBlack << street4BetRed << street5BetBlack << street5BetRed ;


}

または、MainWindow などのクラスの静的メンバーとして宣言および定義することもできます。

于 2012-12-29T05:28:03.730 に答える
0

C++ でグローバル変数にアクセスするには、extern キーワードを使用する必要があります。構文は次のようになります。

extern type varName;

したがって、変数を宣言するファイルでこれを試してください。

extern QList<QRadioButton *> colorList;
于 2012-12-29T05:27:53.933 に答える