0

Qt で GUI を作成しており、さまざまなレベルの要素を操作しようとしています。

#include <QtGui>
#include "mywindow.h"
#include "component.h"
#include "przystanki.h"
MyWindow::MyWindow(QWidget *parent) :
QMainWindow(parent)
{
    webView = new MyWebView(this);
    mainlayout = new QGridLayout();
    mainlayout->addWidget(webView, 0,0);
    Przystanki *stop = new Przystanki(this);
    mainlayout->addWidget(stop, 0, 1);
    QHBoxLayout* bottom = new QHBoxLayout();
    bottom->addWidget(new Component("Linie"));
    bottom->addWidget(new Component("Autobusy"));
    QHBoxLayout* hrightCorner = new QHBoxLayout();
    QVBoxLayout* rightCorner = new QVBoxLayout();
    rightCorner->addStretch(1);
    rightCorner->addWidget(new QPushButton("Start", this));
    rightCorner->addStretch(1);
    hrightCorner->addLayout(rightCorner);
    mainlayout->addLayout(bottom, 1, 0);
    mainlayout->addLayout(hrightCorner, 1, 1);
    hrightCorner->setAlignment(Qt::AlignCenter);
    this->setCentralWidget(new QWidget);
    this->centralWidget()->setLayout(mainlayout);

}

webView には、Przystanki クラスにあるリストに要素を追加するメソッドがあります。

どうすればいいですか?簡単な方法でアクセスすることは可能ですか、それとも何らかの方法でコードをリファクタリングする必要がありますか? (そうであれば、どのようにすればよいかアドバイスをください)。

4

2 に答える 2

1

あなたは出来る:

  • MyWebViewパラメータとして追加したいデータを使用して、クラスにシグナルを追加します。
  • Przystanki信号と同じパラメータタイプでクラスにスロットを追加し、
  • QMainWindowシグナルをコンストラクターのスロットに接続します。

このように、MyWebViewクラスはクラスについて何も知る必要がなくPrzystanki、信号を発するだけです。

于 2012-11-09T20:10:48.853 に答える
0

setter/getterのシステムを実装できます。

私がすることは、クラスでプライベートWebviewにオブジェクトを作成することです。Przystanki * przystanikWebview.h:

#include "przystanki.h"

class Webview{
    Webview(Przstanki *);
    Przstanki * przystanik;
}

クラスPrzystankiで関数 getter: を作成しますtype_of_list Przystanki::get_list()。Przstanki.cpp:

list_type Przstanki::get_list(){
    return list;
}

これで、 内Wedviewで、オブジェクト przystanik が get_list: を呼び出すことができますprzystanik->get_list()

webview.cpp:

Webview::Webview(Przstanki * stop){
    przystanik = stop;
}

Webview::your_method(){
    Przystanik->get_list();
}
于 2012-11-09T18:29:47.010 に答える