Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [QT] signal-slot, создание объекта класса 
V
    Опции темы
losaped
Дата 9.11.2007, 11:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 3.10.2007

Репутация: нет
Всего: нет



У меня лаба по с++ и там все вобщем-то просто, если без GUI то у меня все нормально пашет, а с окошками есть затруднения.
Суть: Создать класс Динамический массив, с возможностью добавления, удаления, ну и всякого-там еще. Массив можно создать несколькими способами взависимости от состояния контролов.
Суть Вопроса: Можно ли конструктор оформить как слот? И как?  smile 
PM MAIL   Вверх
bsa
Дата 9.11.2007, 12:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 24
Всего: 196



Нет, нельзя. Можно сделать базовый класс "массив", и несколько потомков (по числу "контроллов"). На эти контролы навесить слоты создания нужного типа массива. А остальная работа будет вестись через виртуальные методы уже базового класса - т.е. будет совершенно по барабану, какой именно тип массива был создан.
PM   Вверх
losaped
Дата 9.11.2007, 12:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 3.10.2007

Репутация: нет
Всего: нет



пасиб за ответ, а можно разживать?
Допустим есть три переключателя и кнопка, как создавть?
Если выбран такой-то переключатель, то СИГНАЛ(КНОПКА_СОЗДАТЬ, Была_нажата) СЛОТ(Массив такой-то, создать массив?)
Вот в слоте мне не понятно создание массива-это же будет консруктор?
PM MAIL   Вверх
bsa
Дата 9.11.2007, 17:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 24
Всего: 196



Код
class Array
{
public:
      virtual ~Array(){}
      virtual const int& operator[](int index) const = 0;
      virtual int& operator[](int index) = 0;
      virtual void resize(int new_size) = 0;
      virtual int size(void) const = 0;
};

class Array1 : public Array
{
      int *m_data;
      int m_size;
public:
      Array1(int size=0) : m_size(size) { m_data = new int[size]; }
      virtual const int& operator[](int index) const { return m_data[index]; }
      virtual int& operator[](int index) { return m_data[index]; }
      virtual void resize(int new_size) {
            int *p = new int[new_size];
            std::memcpy(p, m_data, std::min(new_size, m_size)*sizeof(*m_data));
            delete m_data;
            m_data = p;
      }
      virtual int size(void) const { return m_size; }
};


....

void MyWindow::createArray1(void)
{
       delete myarray;
       myarray = new Array1;
}

void MyWindow::createArray2(void)
{
       delete myarray;
       myarray = new Array2;
}

void MyWindow::createArray3(void)
{
       delete myarray;
       myarray = new Array3;
}

...

MyWindow::MyWindow(QWidget *parent) : QWidget(parent)
{
       ...
       connect(myButton1, SIGNAL(triggered()), this, SLOT(createArray1()));
       connect(myButton2, SIGNAL(triggered()), this, SLOT(createArray2()));
       connect(myButton3, SIGNAL(triggered()), this, SLOT(createArray3()));
       ...
}
...

PM   Вверх
losaped
Дата 10.11.2007, 01:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 3.10.2007

Репутация: нет
Всего: нет



Ну спасибо, теперь более чем понятно. Жаль что я нигде подобного примера не встречал, теперь вобщем-то весь механизм сигнал-слот как на ладони, большое спосибо

PM MAIL   Вверх
vadiml
Дата 24.11.2007, 00:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 310
Регистрация: 27.7.2007

Репутация: нет
Всего: 7



может в качестве массива было проще QVector или QList использовать ? 

они на ходу меняют свой размер, и имеют уже все готовые функции, остаётся только завернуть этот готовый "динамический массив" в класс со слотами.
и не нужен был бы Array и довески к нему smile
PM MAIL Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets"
JackYF
Любитель
  • В заголовке темы в квадратных скобках обозначьте используемую вами библиотеку, например: [QT],[GTK],[wx].
  • Если вопрос актуален только для некоторой версии библиотеки, либо, если вы пользуетесь не самой последней версией, укажите это. Например: [QT4], [GTK2].
  • Все начинающие изучать Qt - не забудьте зайти сюда.
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • В вопросе укажите полную версию версию библиотеки, а также все дополнительные используемые программные пакеты.
  • Не забывайте пользоваться кнопкой "Код".
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема »


 




[ Время генерации скрипта: 0.0436 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.