Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: aliks-os от Ноября 18, 2009, 11:38



Название: Глюк QTableView при наследовании
Отправлено: aliks-os от Ноября 18, 2009, 11:38
Создаю виджет наследника от QTableView, и тут же в нем создаю вот такое соединение СИГНАЛ-СЛОТ. Сигнал currentChanged - это сигнал присутствующий в QTableView. А слот currentChangedEx я определяю в своем виджете.


Код:
QTableViewEx::QTableViewEx(QWidget *parent) : QTableView(parent) {
    QObject::connect(this->selectionModel(),
                                SIGNAL(currentChanged(QModelIndex, QModelIndex)),
                                this,
                                SLOT(currentChangedEx(QModelIndex, QModelIndex)));
}


 Когда создается виджет я получаю вот такое сообщение об ошибке

QObject::connect: Cannot connect (null)::currentChanged(QModelIndex, QModelIndex) to QTableViewEx::currentChangedEx(QModelIndex, QModelIndex)


Название: Re: Глюк QTableView при наследовании
Отправлено: BaltikS от Ноября 18, 2009, 11:41
Потому что selectionModel создаётся после setModel();
http://doc.crossplatform.ru/qt/4.5.0/qabstractitemview.html#setModel


Название: Re: Глюк QTableView при наследовании
Отправлено: aliks-os от Ноября 18, 2009, 11:47
Это я понял, а как это можно побороть?
К тому же пробовал привязку СИГНАЛ-СЛОТ подключить непосредственно в другой форме, но результат тот же


Название: Re: Глюк QTableView при наследовании
Отправлено: BaltikS от Ноября 18, 2009, 11:53
написать коннект в вирт.функции setModel :)


Название: Re: Глюк QTableView при наследовании
Отправлено: aliks-os от Ноября 18, 2009, 12:04
ОК, спасибо


Название: Re: Глюк QTableView при наследовании
Отправлено: lit-uriy от Ноября 18, 2009, 12:15
>>Это я понял, а как это можно побороть?
можно соединение делать снаружи виджета, там где ты модель выделения устанавливаешь


Название: Re: Глюк QTableView при наследовании
Отправлено: aliks-os от Марта 05, 2010, 12:05
>>Это я понял, а как это можно побороть?
можно соединение делать снаружи виджета, там где ты модель выделения устанавливаешь
Ок, спасибо, так и сделал