crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )


  Ответ в доступ к функциям класса
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
Алексей1153 Дата 15.9.2010, 21:23
  Daan, это таким образом реализована передача параметров в конструктор родительского класса (вообще, в списке инициализации не только конструктор родителя можно вызвать, но и конструкторы членов-переменных класса)
Litkevich Yuriy Дата 15.9.2010, 21:04
 
Цитата(Daan @ 16.9.2010, 1:02) *
А не подскажете, для чего служит эта часть: : QWidget(pwgt,f) ?
для инициализации базового класса, почитай книжки по Си++
Daan Дата 15.9.2010, 21:02
  Да, действительно)

Second::Second(First* pF,QWidget* pwgt,Qt::WindowFlags f) : QWidget(pwgt,f)

А не подскажете, для чего служит эта часть: : QWidget(pwgt,f) ?

Алексей1153 Дата 14.9.2010, 18:25
 
Цитата(Daan @ 14.9.2010, 18:46) *
Может быть после закрытия второго окна ?

ну, в принципе, да )

Цитата(Daan @ 14.9.2010, 18:46) *
А если в функцию OPEN() вставить проверку указывает ли s на виджет, который уже создан, и тогда просто вызывать s->show(); Или никак не проверить ?

технически можно, но нужно ли - это зависит от логики твоего алгоритма. Которого никто, кроме тебя, не знает )
Daan Дата 14.9.2010, 15:46
  Спасибо большое за ответ.
А кстати насчет освобождения памяти после
void First::OPEN(){
s = new Second;
s->show();
}

В какой момент можно выполнять
delete s;

Может быть после закрытия второго окна ?
А если в функцию OPEN() вставить проверку указывает ли s на виджет, который уже создан, и тогда просто вызывать s->show(); Или никак не проверить ?
Алексей1153 Дата 13.9.2010, 21:11
  попробуй так. Изменённые места помечены //<<<<<<
class First : public QWidget, public Ui::Bobkova
{
    Q_OBJECT

public slots:
    void OPEN();
    void SETTEXT();
};

void First::OPEN()
{
s = new Second(this);//<<<<<<
s->show();
}

void First::SETTEXT()
{
lineEdit->setText("O'KEY");
}


class Second : public QWidget, public Ui::Nagaeva
{
    Q_OBJECT

public:
    Second(First* pF,QWidget* pwgt = 0, Qt::WindowFlags f = 0x00020000);//<<<<<<
};

Second::Second(First* pF,QWidget* pwgt,Qt::WindowFlags f) : QWidget(pwgt,f) //<<<<<<
   {
  
    setupUi(this);
    setFixedSize(300, 300);
    connect(pushButton, SIGNAL(clicked()),pF, SLOT(SETTEXT()));//<<<<<<
}




а ещё не забудь освободить памать из-под s
s = new Second;



Как вариант:

Second::Second(First* pF,Qt::WindowFlags f) : QWidget(pF,f) //<<<<<<
{
...



И флаги лучше не цифрой указывать, а константой

Qt::WindowFlags f = 0x00020000
Qt::WindowFlags f = Qt::WindowShadeButtonHint

Daan Дата 13.9.2010, 20:48
  Так и сделал, но чего-то не хватает.
Вообщем во вложении то, о чем я говорю. Мне надо чтобы при нажатии кнопки SET TEXT, принадлежащей второму окну, в первом окне происходи вызов функции, которая устанавливает текст в QLineEdit

код тут
ufna Дата 13.9.2010, 14:36
  Посмотри технологию сигнал-слот.

В "first" будет слот, в "second" сигнал. В нужный момент отсылаешь сигнал, а слот - и есть нужная тебе функция.
Daan Дата 13.9.2010, 14:26
  Имеются два класса, class FIRST и class SECOND, наследуемые от QWidget.
Описаны и определены соответственно в файлах firstclass.h + firstclass.cpp и secondclass.h + secondclass.cpp
Класс FIRST, чей конструктор объявлен в firstclass.h включает #include "secondclass.h" и имеет среди членов
указатель на объекта класса SECOND, например SECOND s*;
Затем в функции main создается объект класса FIRST и появляется окно. Затем при выполнении какой-то функции класса FIRST создается через указатель s* объект класса SECOND и появляется отдельное окно - виджет класса SECOND
Задача такова:
Мне теперь нужно после выполнения определенной функции класса SECOND, описание которой находится в secondclass.cpp вызвать определенную функцию ( допустим функция void take_control() ) класса FIRST, которая описана в файле firstclass.cpp.
(Она будет обрабатывать данные из общего массива, который изменялся во втором окне и рамещать их в первом окне)

Как мне получить доступ к функциям уже созданного объекта класса FIRST из класса SECOND ?
Меня смущает то, что объект класса FIRST уже создан :unsure:
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 29.4.2024, 20:13