2013-06-16 5 views
0

У меня есть класс с именем FirstPage И у меня есть объект FirstPage в главном окне! сейчас я хочу иметь доступ к «Ui» из FirstPage в главном окне Но я не могу!Доступ к Ui другого класса

namespace Ui { 
class MainWindow; 
} 

class MainWindow : public QMainWindow 
{ 
    Q_OBJECT 

public: 
    explicit MainWindow(QWidget *parent = 0); 
    ~MainWindow(); 

private slots: 

private: 
    FirstPage* FrstPg; 
}; 

    MainWindow::MainWindow(QWidget *parent) : 
    QMainWindow(parent), 
    ui(new Ui::MainWindow) 
{ 
    ui->setupUi(this); 
    FrstPg = new FirstPage (this); 
    connect (FrstPg->ui->pushButton,SIGNAL(clicked(),FrstPg,SLOT(show());//Error ERRor 
} 

Что мне делать?!

ответ

0

Почему вы перешли объявить класс MainWindow в пространство имен Ui, но ваше объявление MainWindow не находится в этом пространстве имен? В итоге у вас есть два разных класса MainWindow, один в глобальном пространстве имен и один в пространстве имен Ui. Я думаю, что вы пытаетесь сделать, это что:

namespace Ui { 

class MainWindow : public QMainWindow 
{ 
    Q_OBJECT 

public: 
    explicit MainWindow(QWidget *parent = 0); 
    ~MainWindow(); 

private slots: 

private: 
    FirstPage* FrstPg; 
}; 

} 

И то же самое для файла CPP:

namespace Ui { 

MainWindow::MainWindow(QWidget *parent) : 
    QMainWindow(parent), 
    ui(new Ui::MainWindow) 
{ 
    ui->setupUi(this); 
    FrstPg = new FirstPage (this); 
    connect (FrstPg->ui->pushButton,SIGNAL(clicked(),FrstPg,SLOT(show());//Error ERRor 
} 

} 

Теперь о вашей ошибки, то почему вы пытаетесь сделать здесь подключиться в ваш MainWindow класс, а не в вашем классе FirstPage? Как ваш сигнал, так и ваш слот в этом классе, я не вижу причин для подключения здесь. Я что-то пропустил?

+0

Я изменил название Ui of FirstPage! Но он все еще не работает connect (FrstPg-> firstpage_ui-> pushButton, SIGNAL (щелкнул()), FrstPg, SLOT (show()); – Mehdi

+0

Что вы хотите сделать с этим подключением? Кажется, что вы хотите чтобы показать виджет 'FirstPage', когда пользователь нажимает эту кнопку. Но если кнопка находится внутри FirstPage, она никогда не будет показана ... Можете ли вы быть более откровенным в том, что вы пытаетесь сделать? – Uflex

+0

Да, я хочу сделать то, что вы сказали, но у меня нет этой проблемы, потому что она показана в первый раз с помощью этой Части в моем конструкторе mainWindow! :: FrstPg = new FirstPage (this); – Mehdi

0

Чтобы получить доступ к ui Ивар двигаться Firstpage в Ui::FirstPage *ui; от private к public секции в FirstPage.h

P.S. Предложение Uflex об пространстве имен неверно: namespace Ui { class MainWindow; } используется для передовой декларации Ui::MainWindow *ui; в MainWindow.h

Смежные вопросы