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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: editor на первом элементе этого столбца  (Прочитано 5046 раз)
Evgeniya
Гость
« : Февраль 18, 2010, 21:36 »

Доброго времени суток!!!
Устанавливаю делегат на столбец таблицы QTableView... и вот я хочу,чтобы сразу при открытии editor был на первом элементе этого столбца...
Код
C++ (Qt)
MyModel *mod=new MyModel();
mod->setQuery("select * from [table]");
ui.tableView->setModel(mod);
MyDSBDelegat *dsbd = new MyDSBDelegat();
ui.tableView->setItemDelegateForColumn(2,dsbd);
ui.tableView->edit(mod->index(0,2));
 
Только вот не появляется editor на 1 элементе 3 столбца... Злой
Записан
SABROG
Гость
« Ответ #1 : Февраль 18, 2010, 21:39 »

Вероятно потому, что выборка из базы данных происходит только после возвращения в основной цикл событий, а в момент вызова edit() модель еще пуста.
Записан
Evgeniya
Гость
« Ответ #2 : Февраль 18, 2010, 21:46 »

а как-же сделать чтобы сначала заполнялась модель,а потом происходил вызов edit()??
Записан
Evgeniya
Гость
« Ответ #3 : Февраль 18, 2010, 22:40 »

ведь поидеи сначала заполняется модель,затем она добавляется во вьюшку,а потом уже вызывается edit()... хотя у меня тоже такое ощущения что сначала выполняется edit(),а уже потом заполняется модель.. Но почему так происходит???
Записан
MoPDoBoPoT
Гость
« Ответ #4 : Февраль 18, 2010, 23:03 »

а как-же сделать чтобы сначала заполнялась модель,а потом происходил вызов edit()??
Вызов данного слота поставить в очередь. Это делается через QTimer::singleShot() или QMetaObject::invokeMethod() с Qt::ConnectionType = Qt::QueuedConnection.
Записан
SABROG
Гость
« Ответ #5 : Февраль 19, 2010, 00:44 »

Попробуй вызвать mod->select();, а после него уже edit()
Записан
Evgeniya
Гость
« Ответ #6 : Февраль 19, 2010, 09:26 »

Чего-то не получается...делаю сначала
Код
C++ (Qt)
ui.tableView->setCurrentIndex(mod->index(0,2));
 
а потом edit тож самое..
И вообще получается,что editor создается на нулевой элемент,в него вставляются данные и он сразу вставляет данные в модель,модель обновляется и соответственно после обновления editor уже пропадает..
Записан
Evgeniya
Гость
« Ответ #7 : Февраль 19, 2010, 11:14 »

Я вот смотрю при первом вызове эдита,сначала он создается, потом в него вставляются данные из модели, и сразу вызывается метод setData для записи данны из эдита в модель...блин,ну почему так происходит
Записан
SABROG
Гость
« Ответ #8 : Февраль 19, 2010, 12:07 »

Попробуй воспользоваться советом MoPDoBoPoT'a
Записан
Evgeniya
Гость
« Ответ #9 : Февраль 19, 2010, 22:12 »

Если я этот класс использую отдельно от своего приложения,то все нормально работает...а когда я вызываю этот класс из своего приложения, то всегда при первом вызове эдитора почему-то всегда вызывается эдитор нулевого элемента...
класс свой вызываю так:
Код
C++ (Qt)
  MW * win = new MW(this);
   QMdiSubWindow * subWin = new QMdiSubWindow();
   subWin->setAttribute(Qt::WA_DeleteOnClose);
   subWin->setWidget(win);
   m_ui->mdiArea->addSubWindow(subWin,Qt::Widget);
   subWin->showMaximized();
 
а если вызываю так:
Код
C++ (Qt)
MW * win = new MW(this);
win->show();
 
то все нормально работает..
В чем может быть причина?
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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