1

こんにちは、argv[] 値を他のクラスに渡すことについて質問があります。私のコードでは、argv[1] パラメーターを cmd からクラス mainWindow に渡して、空間イベントをトリガーしたいと考えています。これがコードです。#include "MainWindow.h"

int main(int argc, char *argv[])
{
    #if _DEBUG
        // Do not print memory leaks at end of program (QtWebKit causes a large number of them, see Menu class)
        _CrtSetDbgFlag(_crtDbgFlag &~ _CRTDBG_LEAK_CHECK_DF);
    #endif

    QApplication  app(argc, argv);

    app.setApplicationName("Example_Qt");

    MainWindow window;
    window.show();
    return app.exec();
}

MainWindow.cpp

MainWindow::MainWindow() :
    m_pCurrentTutorial(0),
    m_pCurrentTutorialAREL(0)
{
    setupUi(this);

    quitTutorialButton->setVisible(false);

    QObject::connect(quitTutorialButton, SIGNAL(clicked()), this, SLOT(onQuitTutorialButtonClicked()));

    m_pMenu = new Menu(this, this);

    // Init the main view for the scene using OpenGL
    QGLWidget *glWidget = new QGLWidget(QGLFormat(QGL::SampleBuffers));
    m_pGraphicsView = graphicsView;
    m_pGraphicsView->setScene(m_pMenu);
    m_pGraphicsView->setViewport(glWidget);
    m_pGraphicsView->setFrameShape(QFrame::NoFrame);

    // Do not show context menu in web view
    m_pGraphicsView->setContextMenuPolicy(Qt::NoContextMenu);
}

MainWindow::~MainWindow()
{
    delete m_pMenu;
    m_pMenu = 0;

    delete m_pGraphicsView;
    m_pGraphicsView = 0;
}

Mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <vector>

#include <QVBoxLayout>
#include <QWidget>
#include <QWebView>

class TutorialBase;
class TutorialBaseAREL;
#include "Menu.h"

#include "ui_MainWindow.h"

QT_BEGIN_NAMESPACE
class QGraphicsView;
class QBoxLayout;
QT_END_NAMESPACE


class MainWindow : public QMainWindow, public Ui::MainWindow, public Menu::TutorialSelectionCallback
{
    Q_OBJECT

public:
    MainWindow();
    virtual ~MainWindow();

    QBoxLayout* getButtonBar();

protected slots:
    void onQuitTutorialButtonClicked();

protected:
    void keyPressEvent(QKeyEvent *event);

    void quitTutorialIfAny();

    void startTutorial(int tutorialNumber);

    void startTutorialAREL(int tutorialNumber);

    TutorialBase*               m_pCurrentTutorial;
    TutorialBaseAREL*           m_pCurrentTutorialAREL;
    QGraphicsView*              m_pGraphicsView;
    Menu*                       m_pMenu;
};


#endif

パラメータを argv[] から mainwindow.cpp に渡すのを手伝ってくれる人はいますか?

どうもありがとう

イン

4

1 に答える 1

0

char *次のように、単一の引数を取る別のコンストラクターを提供する (または現在のコンストラクターを置き換える) ことができるはずです。

MainWindow::MainWindow (char *arg) :
    m_pCurrentTutorial(0),
    m_pCurrentTutorialAREL(0)
{
    // body here, including checking argument, such as:
    if (strcmp (arg, "-help") == 0) {
        provideHelp();
    }
}

オブジェクトを作成するときにそのコンストラクターを使用します。

MainWindow window (argv[1]);

Mainwindow.hこの新しいコンストラクターは、単に関数として に追加するだけでなく、クラス ( ) にリストする必要があることに注意してくださいMainwindow.cpp

public:
    MainWindow();
    MainWindow(char*);
    virtual ~MainWindow();
于 2013-06-06T09:14:08.610 に答える