Russian Qt Forum

Qt => Общие вопросы => Тема начата: crocus от Август 23, 2007, 09:12



Название: doubleClick, QSignalMapper и как их срастить
Отправлено: crocus от Август 23, 2007, 09:12
Уж мозг сломал ???
есть TableView, есть TabWidget c 3 вкладками( жилая, комерч, земля) в зависимости на какой вкладке нажимаем кнопку "поиск "- заполняется TableView, хочется при двойном клике по TableView показывать подробную информацию конкретно (либо "подробно о жилая", либо "подробно о комерч", либо "подробно о земле") реализовал так:
Код:
connect( flatseach, SIGNAL( exec( const QString & ) ), this, SLOT( openDetail() ) );
   
.......................................................

connect( commercialseach, SIGNAL( exec( const QString & ) ), this, SLOT( openDetail() ) );

......................................................

connect( seachgroundareas, SIGNAL( exec( const QString & ) ), this, SLOT( openDetail() ) );
........................................

void MainWindow::openDetail()
{
detailToolBar->clear();
    detailToolBar->addAction( tmp_dock_action );
connect( tableView, SIGNAL( doubleClicked ( const QModelIndex & ) ), tmp_dock_action, SLOT ( toggle())); 
connect( tmp_dock_action, SIGNAL( toggled ( bool ) ), tmp_dock, SLOT( setVisible( bool )));
}
........................................

//где-то в коде
tmp_dock_action = qobject_cast<QAction*>(a_dock_d);
tmp_dock = qobject_cast<QDockWidget*>(dock_d);

// и
tmp_dock_action = qobject_cast<QAction*>(a_dock_comm);
tmp_dock = qobject_cast<QDockWidget*>(dock_comm);
// и еще
tmp_dock_action = qobject_cast<QAction*>(a_dock_gr);
tmp_dock = qobject_cast<QDockWidget*>(dock_gr);
Но при клике по "жилой" открывается правильно, а вот если затем кликаем по "коммерч" открывается оба и "жилая" и "коммерч".
Т.е. "tmp_dock = qobject_cast<QDockWidget*>(dock_d);" как-то неотрабатывает, сохраняя и предыдущее значение tmp_dock
Полагаю надо как-то замаппить клик на TableView, но как не врубаюсь
Короче вот скрин:
(http://source.foliant.net.ru/screen.jpg)


Название: Re: doubleClick, QSignalMapper и как их срастить
Отправлено: EhTemka от Август 23, 2007, 16:55
 сделай дополнительный слот, который коннектится с doubleClickеd. И в нем проверяй что за индекс и к чему относится, а уж в зависимости от этого показывай то или иное. Я вообже из кода не понимаю как у тебя это работает...