Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [Qt] создание класса 
:(
    Опции темы
ecspertiza
Дата 27.11.2008, 12:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 763
Регистрация: 3.11.2008
Где: г.Смоленск

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



вообщем хочу создать вот такой класс

http://pic.ipicture.ru/uploads/081127/PUUSs4SSwG.jpg

из базы на него грузятся картинки, по клику на левую или правую кнопку, происхоби переход по картинкам, кнопки я думаю будут наследованны от QLabel, т.к я их нарисую и засуну их в QLabel, пока проблема такая, немогу повесить на класс созданный от QLabel сигнал clicked(), делаю так

line.cpp
Код

#include "line.h"

Line::Line(QWidget *parent)
    : QWidget(parent)
{
    resize(600,100);
    LeftButton *left = new LeftButton(this);
    left->setText("qwerty");
    connect(left,SIGNAL(clicked()),this,SLOT(mess()));
}

void Line::mess()
{
    QMessageBox::information(this,tr("Us"),tr("Good"));
}

LeftButton::LeftButton(Line *parent)
    : QLabel(parent)
{
    setGeometry(0,0,50,100);        
}
 

line.h
Код

#ifndef __LINE_H__
#define __LINE_H__

#include <QWidget>
#include <QLabel>
#include <QMessageBox>

class Line : public QWidget
{
    Q_OBJECT

public :
    Line(QWidget *parent = 0);    
    
public slots:
    void mess();    
    
};

class LeftButton : public QLabel
{
    Q_OBJECT
    
public:
    LeftButton(Line *parent = 0);    
    
signals:
    void clicked();    
    
};

#endif 


как сделаю сей класс обязуюсь выложить исходника smile 


--------------------
С уважением,
мастер конфетного цеха!

онлайн компилер
залип
PM MAIL   Вверх
Elfebet
Дата 27.11.2008, 12:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 545
Регистрация: 15.5.2006
Где: Украина. Запорожь е.

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



ну дык чтоб сигнал работал нужно его емитировать
например в класс LeftButton  добавляеш 
Код

private:
  void mouseReleaseEvent(QMouseEvent *);

в cpp файле
Код

void LeftButton::mouseReleaseEvent(QMouseEvent *)
{
    emit clicked();
}





--------------------
Программист не должен всё знать... он должен знать где можно посмотреть
PM MAIL ICQ GTalk   Вверх
SABROG
Дата 27.11.2008, 13:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

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



Мне кажется, что тут несколько иначе надо сделать. Замучаешься кликать по стрелочкам, чтобы прокрутить картинки. Надо как-то эмитить сигнал периодически пока зажата клавиша мышки. Еще было бы хорошо повесить сигналы на клавиши Left/Right, чтобы можно было крутить полоску туда сюда с помощью клавы. Home/End - начало, конец списка. Tab - прокрутить до следующего элемента и сделать его активным. И совсем отлично было бы повесить mouse wheel (колесико мышки) на прокрутку. А для прокрутки использовать QWidget::scroll(), чтобы не по-элементно.


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
ecspertiza
Дата 28.11.2008, 13:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 763
Регистрация: 3.11.2008
Где: г.Смоленск

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



Продолжаю создовати ентот класс.

Значитцо так создаю виджет на нём левую, и правую кнопку, между ними центральный Виджет, на катором собственно и будут картинки, только вот количество картинок динамическое, пока описание класса картинки выгледит так

Код

class Image : public QLabel
{
    Q_OBJECT
public:
    Image(QWidget *parent = 0,int x = 0, int y = 0);
};


вопрос в том как создать денамический массив класса Image?


--------------------
С уважением,
мастер конфетного цеха!

онлайн компилер
залип
PM MAIL   Вверх
Elfebet
Дата 28.11.2008, 13:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 545
Регистрация: 15.5.2006
Где: Украина. Запорожь е.

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



QList

Добавлено @ 13:48
типа такого
Код

QList<Image*> *lstImage = new QList<Image*>;
....
Image *img = new Image(this);
..
lstImage->append(img);


Это сообщение отредактировал(а) Elfebet - 28.11.2008, 13:49


--------------------
Программист не должен всё знать... он должен знать где можно посмотреть
PM MAIL ICQ GTalk   Вверх
mes
Дата 28.11.2008, 13:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


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

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



Цитата(Elfebet @  28.11.2008,  13:46 Найти цитируемый пост)
QList<Image*> lstImage = new QList<Image*>;

если с использованием new, то QList<Image*> * lstImage = new QList<Image*>;


Это сообщение отредактировал(а) mes - 28.11.2008, 13:53


--------------------
PM MAIL WWW   Вверх
ecspertiza
  Дата 28.11.2008, 13:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 763
Регистрация: 3.11.2008
Где: г.Смоленск

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



Если я правильно понял то вот так
Код

QList<Image *> image;

for (int i = 0; i <10; i++)
{
     image[i] = new Image(....);
} 


что то мне кажется что немногу подругому.


--------------------
С уважением,
мастер конфетного цеха!

онлайн компилер
залип
PM MAIL   Вверх
Elfebet
Дата 28.11.2008, 14:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 545
Регистрация: 15.5.2006
Где: Украина. Запорожь е.

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



Код

QList<Image *> image;
for (int i = 0; i <10; i++)
{
     image.append(  new Image(....)  );
} 


можно еще Векторы юзать
Код

QVector<Image*> image;
for (int i = 0; i <10; i++)
{
     image.append(  new Image(....)  );
} 

или
Код

QVector<Image*> image(10, 0);
Image **img = image.data();
for (int i = 0; i <image.size(); i++)
{
     img[i] = new Image(....);
} 


кароче вариантов много, лучше юзай QList

Это сообщение отредактировал(а) Elfebet - 28.11.2008, 14:03


--------------------
Программист не должен всё знать... он должен знать где можно посмотреть
PM MAIL ICQ GTalk   Вверх
ecspertiza
Дата 28.11.2008, 14:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 763
Регистрация: 3.11.2008
Где: г.Смоленск

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



ЗАРАБОТАЛО!!!! Elfebet спасиб, буду дальше ковырять.


--------------------
С уважением,
мастер конфетного цеха!

онлайн компилер
залип
PM MAIL   Вверх
ecspertiza
Дата 28.11.2008, 15:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 763
Регистрация: 3.11.2008
Где: г.Смоленск

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



Цитата(Elfebet @ 27.11.2008,  12:24)
Код

private:
  void mouseReleaseEvent(QMouseEvent *);

в cpp файле
Код

void LeftButton::mouseReleaseEvent(QMouseEvent *)
{
    emit clicked();
}


Почти готово, а вот про ету тему где можно почитать? Хочу повесить события на скрол, и если кнопка зажата.


--------------------
С уважением,
мастер конфетного цеха!

онлайн компилер
залип
PM MAIL   Вверх
Elfebet
Дата 28.11.2008, 16:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 545
Регистрация: 15.5.2006
Где: Украина. Запорожь е.

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



Код

Почти готово, а вот про ету тему где можно почитать?

в документации "Signals and Slots"
Цитата

Хочу повесить события на скрол, и если кнопка зажата. 

нифига не понял, какое событие? у тя что при прокручивании виджет НЕ прокручиваеться?

подружись с ассистентом, там все написано - что зачем и как, лучше документации тебе никто не ответит


Это сообщение отредактировал(а) Elfebet - 28.11.2008, 16:18


--------------------
Программист не должен всё знать... он должен знать где можно посмотреть
PM MAIL ICQ GTalk   Вверх
ecspertiza
Дата 1.12.2008, 15:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 763
Регистрация: 3.11.2008
Где: г.Смоленск

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



Ну вообщем вот получилась вот такая беда(в атаче), там есть процедура addImage, вот после её использования я думаю надо какойто update проводить, так как картинки создаются только при создании Виджета. Ну и вообще мож кто подскажет что подправить нужно, а то я в етом деле недавно.

Присоединённый файл ( Кол-во скачиваний: 7 )
Присоединённый файл  src.rar 1,02 Kb


--------------------
С уважением,
мастер конфетного цеха!

онлайн компилер
залип
PM MAIL   Вверх
SABROG
Дата 5.12.2008, 18:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

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



А ты случаем не класс для этого эвента кодишь ? http://trolltech.com/developer/pimp-my-wid...veloper-contest

http://trolltech.com/images/developerzone/list.PNG

А то глядишь сигвей выйграешь ;)


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
ecspertiza
Дата 8.12.2008, 08:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 763
Регистрация: 3.11.2008
Где: г.Смоленск

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



Вообще нет я для проги своей smile  но теперь можно будет попробывать выложить smile


--------------------
С уважением,
мастер конфетного цеха!

онлайн компилер
залип
PM MAIL   Вверх
ecspertiza
Дата 8.12.2008, 11:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 763
Регистрация: 3.11.2008
Где: г.Смоленск

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



Ну вот така тема вышла, треба объективная критикаsmile



Присоединённый файл ( Кол-во скачиваний: 9 )
Присоединённый файл  LineWidget.zip 788,39 Kb


--------------------
С уважением,
мастер конфетного цеха!

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

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

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


 




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


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

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