我正在用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类中的列表中添加一个元素。
我该怎么办?是否可以以简单的方式访问它,还是以某种方式重构我的代码? (如果是的话,请给我一些建议,我应该以什么方式去做)。
答案 0 :(得分:1)
你可以:
MyWebView
类中添加一个信号,其中包含您要添加的数据作为参数Przystanki
类中添加一个与信号具有相同参数类型的插槽QMainWindow
构造函数中的插槽。这样,MyWebView
类不需要知道Przystanki
类的任何内容,只需要发出信号。
答案 1 :(得分: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();
}