Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: Nemo2000 от Октябрь 23, 2010, 15:20



Название: Ошибка при вызове функции sender()
Отправлено: 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);
}


Название: Re: Ошибка при вызове функции sender()
Отправлено: crossly от Октябрь 23, 2010, 16:39
и правильно падает... почитайте в асистенте что делает метод sender().... и если я правильно понял что вам нужно то думаю больше подойдет QsignalMapper


Название: Re: Ошибка при вызове функции sender()
Отправлено: Nemo2000 от Октябрь 23, 2010, 16:53
Я так понял что sender() возвращает "не ноль" только при работе с сигналами-слотами?
Раз так,то буду читать про QSignalMapper=)