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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Ошибка при вызове функции sender()  (Прочитано 2108 раз)
Nemo2000
Гость
« : Октябрь 23, 2010, 15:20 »

     Создал свой клас MineButton, который наследует QPushButton. В нём перегрузил функцию mouseReleaseEvent.
В главной програме создаю массив обьектов типа MineButton. Каждой кнопке на начале присваиваю свойства "row" и "col" с помощью функции setProperty().
      При нажатии на любую кнопку с этого массива, в функции mouseReleaseEvent необходимо узнать какая именно кнопка была нажата и считать свойства "row" и "col". Делаю это с помощью sender()->property("row").toInt();. Програма запускается,но при нажатии на кнопку вылетает. Грустный

Код класса MineButton
Код:
class MineButton:public QPushButton
{
    Q_OBJECT
public:
    MineButton(QWidget *parent = 0);
    int row;
    int col;
    void mouseReleaseEvent(QMouseEvent *event);
};

конструктор класса
Код:
MineButton::MineButton(QWidget *parent):QPushButton(parent)
{
    
}

создание обьектов типа MineButton
Код:
MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent), ui(new Ui::MainWindow)
{
   //тут много кода
   for (int i=0;i<81;i++)
   {
       buttons[i]=new MineButton(this);
       buttons[i]->setProperty("row",i/9);
       buttons[i]->setProperty("col",i%9);
   }
   //тут много кода
}

код функции mouseReleaseEvent
Код:
void MineButton::mouseReleaseEvent(QMouseEvent *event)
{
    qDebug("mouseReleaseEvent");
    MainWindow a;
    row=sender()->property("row").toInt();//здесь ошибка
    col=sender()->property("col").toInt();//здесь ошибка
    a.Event(event,row,col);
}
« Последнее редактирование: Октябрь 23, 2010, 15:36 от Nemo2000 » Записан
crossly
Гость
« Ответ #1 : Октябрь 23, 2010, 16:39 »

и правильно падает... почитайте в асистенте что делает метод sender().... и если я правильно понял что вам нужно то думаю больше подойдет QsignalMapper
Записан
Nemo2000
Гость
« Ответ #2 : Октябрь 23, 2010, 16:53 »

Я так понял что sender() возвращает "не ноль" только при работе с сигналами-слотами?
Раз так,то буду читать про QSignalMapper=)
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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