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 * przystanik。Webview.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 回答