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

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

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: Как в диалоговое окно передать переменные  (Прочитано 13405 раз)
RuslanBZ
Гость
« : Июль 12, 2009, 11:28 »

Написал тестовую программу.

Как мне в диалоговое окно передать переменные?

main.cpp
Код:
#include <QApplication>
#include "dialogimpl.h"
//
int main(int argc, char ** argv)
{
int i;
i = 5;

QApplication app( argc, argv );
DialogImpl win;
win.show();
app.connect( &app, SIGNAL( lastWindowClosed() ), &app, SLOT( quit() ) );
return app.exec();
}

dialogimpl.h
Код:
#ifndef DIALOGIMPL_H
#define DIALOGIMPL_H
//
#include <QDialog>
#include "ui_dialog.h"
//
class DialogImpl : public QDialog, public Ui::Dialog
{
Q_OBJECT
public:
DialogImpl( QWidget * parent = 0, Qt::WFlags f = 0 );
private slots:
};
#endif

dialogimpl.cpp
Код:
#include "dialogimpl.h"
//
DialogImpl::DialogImpl( QWidget * parent, Qt::WFlags f)
: QDialog(parent, f)
{
setupUi(this);

// как мне доступиться к переменной   i
}
//
Записан
ASeN
Гость
« Ответ #1 : Июль 12, 2009, 12:35 »

Может быть так?

#include "dialogimpl.h"
//
extern int i;
...
Записан
BRE
Гость
« Ответ #2 : Июль 12, 2009, 12:56 »

[off]
Хочу писать программы с использованием Qt. Выучить C++ не предлагать.
[/off]
Записан
ufna
Гость
« Ответ #3 : Июль 12, 2009, 13:09 »

Цитировать
class DialogImpl
    : public QDialog, public Ui::Dialog
{
Q_OBJECT

public:
   DialogImpl( QWidget * parent = 0, Qt::WFlags f = 0 );
   void setI(int i) { thisI = i; };
private:
   int thisI;
};
Записан
f-r-o-s-t
Гость
« Ответ #4 : Июль 12, 2009, 13:26 »

[off]
Хочу писать программы с использованием Qt. Выучить C++ не предлагать.
[/off]
+5
Записан
break
Гипер активный житель
*****
Offline Offline

Сообщений: 846


Просмотр профиля
« Ответ #5 : Июль 12, 2009, 15:20 »

Цитировать
Может быть так?

#include "dialogimpl.h"
//
extern int i;
так точно не нужно.

сделай соответствующий внешний метод в классе диалоговогог окна устанавливающий нужную переменную, структуру или указатель на то что тебе нужно

Код
C++ (Qt)
class CDialog
{
int m_I;
public:
inline setI( int i ) { m_I = i; }
}

В некоторых случаях для больших структур удобно использовать шаблон одиночка - найди инф. о нем и почитай - там ничего сложного.

Правда все это не относится к Qt
Записан
f-r-o-s-t
Гость
« Ответ #6 : Июль 12, 2009, 16:40 »

Код
C++ (Qt)
class CDialog
{
int m_I;
public:
inline setI( int i ) { m_I = i; }
}
Зачем еще inline ?=)
Записан
break
Гипер активный житель
*****
Offline Offline

Сообщений: 846


Просмотр профиля
« Ответ #7 : Июль 12, 2009, 17:51 »

1) сори я там пропустил void
Код:
class CDialog
{
int m_I;
public:
inline void setI( int i ) { m_I = i; }
}

2) обычно всегда для таких методов делаю inline т.к. код метода очень прост, тем не менее это все равно на усмотрение компилятора
Записан
f-r-o-s-t
Гость
« Ответ #8 : Июль 12, 2009, 18:05 »

1) сори я там пропустил void
Код:
class CDialog
{
int m_I;
public:
inline void setI( int i ) { m_I = i; }
}

2) обычно всегда для таких методов делаю inline т.к. код метода очень прост, тем не менее это все равно на усмотрение компилятора
1) =)
2) а то что функция определена в самом классе её не делает inline или это чтобы наверняка? контрольный выстрел =)
Записан
break
Гипер активный житель
*****
Offline Offline

Сообщений: 846


Просмотр профиля
« Ответ #9 : Июль 12, 2009, 20:19 »

Цитировать
а то что функция определена в самом классе её не делает inline

Не буду утверждать но мне кажется не делает. Как мне казалось если мы реализуем функцию в объявлении класса - она никакого отношения к inline не имеет. Если же пишем inline - то возможно компилятор сделает ее действительно такой (подставит код функции во все места ее вызова). Т.е. inline - это вроде как просьба программиста к компилятору, которая вполне может оказаться невыполненной.
А по поводу реализации функций в классе это конечно плохой тон программирования - но у некоторых такие функции частенько немаленького размера - что ж они все inline что ли будут?
Записан
Rcus
Гость
« Ответ #10 : Июль 12, 2009, 20:28 »

TC++PL специальное издание, 10.2.9. Определение функции в классе.
Записан
f-r-o-s-t
Гость
« Ответ #11 : Июль 12, 2009, 21:46 »

Цитировать
а то что функция определена в самом классе её не делает inline

Не буду утверждать но мне кажется не делает. Как мне казалось если мы реализуем функцию в объявлении класса - она никакого отношения к inline не имеет. Если же пишем inline - то возможно компилятор сделает ее действительно такой (подставит код функции во все места ее вызова). Т.е. inline - это вроде как просьба программиста к компилятору, которая вполне может оказаться невыполненной.
А по поводу реализации функций в классе это конечно плохой тон программирования - но у некоторых такие функции частенько немаленького размера - что ж они все inline что ли будут?
Уже  ответили =)
Не все, а те которые можно сделать inline =)
Записан
break
Гипер активный житель
*****
Offline Offline

Сообщений: 846


Просмотр профиля
« Ответ #12 : Июль 12, 2009, 22:38 »

Цитировать
TC++PL специальное издание, 10.2.9. Определение функции в классе.

И что там по вашему? Разве написано что inline необязательно писать и что просто встраиваемая функция будет рассмотрена как inline?

Во вложении этот самый пункт!
Записан
Rcus
Гость
« Ответ #13 : Июль 12, 2009, 22:49 »

Именно это и написано (встраиваемая функция это такой перевод inlined function. блин даже пришлось подсмотреть оригинал чтобы подавить сомнения, надо было брать его, а не перевод Грустный)
Записан
f-r-o-s-t
Гость
« Ответ #14 : Июль 12, 2009, 23:00 »

И что там по вашему? Разве написано что inline необязательно писать и что просто встраиваемая функция будет рассмотрена как inline?

Там все так и написано =)
Записан
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  


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