Russian Qt Forum
Май 15, 2024, 21:48 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: 'ui' was not declared in this scope  (Прочитано 9080 раз)
461
Гость
« : Июль 28, 2010, 22:53 »

Очень ламерский вопрос Улыбающийся Грустный у меня обычное гуи-приложение, но в проект я добавил еще один cpp-файл, и мне требуется обратится оттуда к форме, пишу ui->lineEdit->....., пишет ошибку 'ui' was not declared in this scope.

Помогите пжл. Заранее спасибо.
Записан
JamS007
Гость
« Ответ #1 : Июль 28, 2010, 23:00 »

Из написанного Вами можно сделать вывод, что компилятор не может найти ui.
Может прикрепите Ваш проект? Тогда можно будет посмотреть в чем проблема.
Записан
461
Гость
« Ответ #2 : Июль 28, 2010, 23:16 »

сократил прогу)) w.cpp ругань идет
Записан
JamS007
Гость
« Ответ #3 : Июль 29, 2010, 00:07 »

Ну, как я и думал... Я тоже учусь, и когда-то тоже так начинал Улыбающийся

Обращаться к обьектам, так, как это делаете Вы нельзя. Поясню. "Ui" - обьект класса MainWindow, он создан в нем, и пренадлежит только ему. Обращаться стандартным способом к нему можно только из класса MainWindow. Из других классов непосредственно - нельзя. (Можно, но это - изврат) Посоветовать могу изучить модель сигнал-слот. В Qt очень часто используеться, рано или поздно Вам нужно будет разобраться с ней. Поэтому, рекомендую начать уже.

Или, разобраться в таком коде:

MainWindow.h
Код:
#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>

namespace Ui {
    class MainWindow;
}

class MainWindow : public QMainWindow {
    Q_OBJECT
public:
    MainWindow(QWidget *parent = 0);
    ~MainWindow();

    void setText(); // тут акцентировать внимание
protected:
     Ui::MainWindow *ui;

    void changeEvent(QEvent *e);

};

#endif // MAINWINDOW_H

Код:
#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow.cpp
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::changeEvent(QEvent *e)
{
    QMainWindow::changeEvent(e);
    switch (e->type()) {
    case QEvent::LanguageChange:
        ui->retranslateUi(this);
        break;
    default:
        break;
    }
}

void MainWindow::setText() //Обратить внимание на эту функцию
{
     ui->lineEdit->setText("1");
}

w.h
Код:
#ifndef W_H
#define W_H

#include <QTcpSocket>
#include "MainWindow.h"

class w1: public QTcpSocket
{
    Q_OBJECT;

public:
    w1(MainWindow* window,/*Обратить внимание*/ QObject *parent = 0);

};


#endif // W_H

w.cpp
Код:
#include <QtNetwork>

#include "w.h"
#include "mainwindow.h"


w1::w1(MainWindow* window, /*Обратить внимание*/ QObject *parent) : QTcpSocket(parent)
{
    window.setText(); // и тут тоже подумать.
}

П. С. Для понимания слудует знать что такое указатели.
Смотрел в gedit, если что забыл поправить - простите, в QtCreator проект не окрылся Улыбающийся
« Последнее редактирование: Июль 29, 2010, 00:12 от JamS007 » Записан
461
Гость
« Ответ #4 : Июль 29, 2010, 17:42 »

большое спасибо, разобрался Улыбающийся Смеющийся
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.137 секунд. Запросов: 20.