crossplatform.ru

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


  Ответ в Индекс элемента в массиве
Введите ваше имя
Подтвердите код

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

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


Последние 10 сообщений [ в обратном порядке ]
greh Дата 8.10.2010, 17:18
  Всем спасибо, воспользовался сигнал маппером.
igor_bogomolov Дата 8.10.2010, 13:47
  Плохое решение. Используйте тогда property, имя объекта вам может понадобиться для других целей.
Или освойте все таки QSignalMapper, он для этого и предназначен
kwisp Дата 8.10.2010, 13:43
 
Цитата(greh @ 8.10.2010, 14:18) *
QColorDialog* sender = qobject_cast<QColorDialog *>(QObject::sender());
unsigned index = sender->objectName().toInt();

можно это заменить на
unsigned index;
if(sender()) index = sender()->objectName().toInt();
igor_bogomolov Дата 8.10.2010, 13:27
  QSignalMapper
http://doc.crossplatform.ru/qt/4.6.x/signa...and-slots-usage
greh Дата 8.10.2010, 13:18
 
Цитата(kwisp @ 8.10.2010, 16:10) *
greh,
способов много.
от перехода от массива к QMap QHash, до награждения каждого обЪекта диалога свойством индекса хоть через setProperty(QVariant) или setObjectName(const QString&) и проч

примерно так?
for(int i = 0; i < COLOR_COUNT; i++)
{
    ColorDialog[i] = new QColorDialog();
    ColorDialog[i].setObjectName(QString::number(i));
}

QColorDialog* sender = qobject_cast<QColorDialog *>(QObject::sender());

unsigned index = sender->objectName().toInt();
kwisp Дата 8.10.2010, 13:10
  greh,
способов много.
от перехода от массива к QMap QHash, до награждения каждого обЪекта диалога свойством индекса хоть через setProperty(QVariant) или setObjectName(const QString&) и проч
greh Дата 8.10.2010, 13:02
  Как определить индекс элемента в массиве при получении сигнала от него?

Пример:

h:
static const unsigned short COLOR_COUNT = 5;

QColorDialog* Dialog[COLOR_COUNT];

QColor* Color[COLOR_COUNT];

void SetColor(QColor SelectedColor);


cpp:
for(int i = 0; i < COLOR_COUNT; i++)
connect(Dialog[i],SIGNAL(colorSelected(QColor)),this,SLOT(SetColor(QColor)));

void MainWindow::SetColor(QColor SelectedColor)
{
    unsigned index = ???;

    Color[index] = SelectedColor;
}
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 28.3.2024, 22:13