2012-11-09 65 views
0

我正在用Qt創建一個GUI,我試圖與不同層次上的元素進行交互。在不同層次上與Qt小部件交互

#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類的列表中。

我該怎麼辦?是否可以通過簡單的方式訪問它,還是必須以某種方式重構我的代碼? (如果是這樣,請以我應該怎樣做的方式給我一些建議)。

回答

1

,你可以:

  • MyWebView類你想添加爲參數的數據添加一個信號,
  • 在一個插槽添加Przystanki類與信號具有相同的參數類型,
  • 將信號連接到QMainWindow構造函數中的插槽。

這樣,MyWebView類並不需要了解Przystanki類的東西,它只是要發出的信號。

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(); 
}