Название: получить состояние QCheckListItem Отправлено: Hellenna от Май 13, 2005, 15:54 делаю так:
Код: for(int i=0; i<5; i++){ после этого пользователь может галочкой отмечать нужные ему записи. а как узнать отмечена ли конкретная запись? хотелось бы что-нибудь вида myListView->at(i)->isChecked() но метод myListView->at(i) возвращает объект класса QListViewItem у которого нет свойств, отвечающих за состояние. :( Можно ли как-нибудь сделать это напрямую или надо изголяться? :roll: Название: получить состояние QCheckListItem Отправлено: Sergeich от Май 13, 2005, 16:30 QListViewItem* item = ....;
if ( item && item->rtti() == 1 ) { QCheckListItem* checkItem = (QCheckListItem*) item; bool on = checkItem->isOn(); } Название: получить состояние QCheckListItem Отправлено: ANM от Май 13, 2005, 16:58 По моему в стиле QT вот так:
Код: QListViewItem* item = ....; Название: получить состояние QCheckListItem Отправлено: Sergeich от Май 13, 2005, 17:35 inherits() - метод QObject, а QListViewItem* не наследник QObject
Название: получить состояние QCheckListItem Отправлено: ANM от Май 13, 2005, 17:44 Понятно, ну тогда лучше включить C++ rtti и использовать dynamic_cast.
Название: получить состояние QCheckListItem Отправлено: Sergeich от Май 13, 2005, 18:35 Да можно конечно, только зачем? RTTI немного снижает скорость работы и компиляции приложения, да и не все компиляторы его корректно поддерживают.
Название: получить состояние QCheckListItem Отправлено: ANM от Май 13, 2005, 19:05 RTTI повышает объем скомпилированной программы, добавляя к каждому классу имеющему таблицу виртуальных функций доп. информацию о типе.
Насчет компиляторов ну не знаю, по моему уже все корректно поддерживают, на дворе 21 век. :) Скорость работы кода не использующего C++ RTTI не снижаетcя, но естественно Код:
будет быстрей чем Код:
но не думаю что это большой плюс. Преимущество RTTI очевидно: отсутствие конфликтов между различными наследниками от QCheckListItem. Название: получить состояние QCheckListItem Отправлено: Hellenna от Май 13, 2005, 21:34 Спасибо большое.
Попробую. |