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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: двойной щелчок только левой кнопкой мыши  (Прочитано 4046 раз)
Evgeniya
Гость
« : Июль 23, 2009, 20:57 »

Доброго времени суток!!!
Как можно сделать чтобы на двойной щелчок только левой кнопкой мыши издавался сигнал doubleClicked(QModelIndex)Непонимающий
Записан
vovan1982
Гость
« Ответ #1 : Июль 24, 2009, 09:32 »

Сделал такое для TreeView

Код
C++ (Qt)
class AccessoriesTreeView : public QTreeView {
   Q_OBJECT
public:
   AccessoriesTreeView(QWidget *parent = 0);
private slots:
   void setPressedIndex(const QModelIndex &index);
private:
   QModelIndex pressedIndex;
   virtual void mouseDoubleClickEvent(QMouseEvent *event);
};

Код
C++ (Qt)
AccessoriesTreeView::AccessoriesTreeView(QWidget *parent) : QTreeView(parent)
{
   setEditTriggers(QAbstractItemView::NoEditTriggers);
   setAlternatingRowColors(true);
   setRootIsDecorated(false);
   setSortingEnabled(true);
   setAllColumnsShowFocus(true);
   setExpandsOnDoubleClick(false);
   connect(this,SIGNAL(pressed(QModelIndex)),this,SLOT(setPressedIndex(QModelIndex)));
}
void AccessoriesTreeView::setPressedIndex(const QModelIndex &index)
{
   pressedIndex = index;
}
void AccessoriesTreeView::mouseDoubleClickEvent(QMouseEvent *event)
{
   QModelIndex index = indexAt(event->pos());
   if (!index.isValid()||(pressedIndex != index)) {
       QMouseEvent me(QEvent::MouseButtonPress,
                      event->pos(), event->button(),
                      event->buttons(), event->modifiers());
       mousePressEvent(&me);
       return;
   }
   QPersistentModelIndex persistent = index;
   if(event->button() & Qt::LeftButton)
       emit doubleClicked(persistent);
   if ((event->button() & Qt::LeftButton) && !edit(persistent, DoubleClicked, event)
       && !style()->styleHint(QStyle::SH_ItemView_ActivateItemOnSingleClick, 0, this))
       emit activated(persistent);
}

смотри реализацию mouseDoubleClickEvent() для вьюхи, и переопределяй его, добавив фильтр для левой кнопки мыши
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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