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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: QTreeWidget и мышь  (Прочитано 4841 раз)
ZIkos
Гость
« : Май 09, 2007, 18:36 »

У меня есть класс наследник от QTreeWidget. Мне нужно чтобы по нажатию правой кнопки мыши у меня менялся шрифт элемента QTreeWidgetItem на котором кликнул. Я переопределяю
void mousePressEvent(QMouseEvent *). И пишу так:

void XmlTree::mousePressEvent(QMouseEvent *event)
{
        if(event->button()==Qt::RightButton)
        currentItem()->setForeground(0,Qt::magenta);
}

У меня пропало событие по клику левой кнопки мыши.
Можно ли как нибудь переопределить mousePressEvent(QMouseEvent *)
чтобы остались старые события?
Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #1 : Май 09, 2007, 18:58 »

1) Попробуй сделать так:

Код:

void XmlTree::mousePressEvent(QMouseEvent *event)
{
    if(event->button()==Qt::RightButton) {
        currentItem()->setForeground(0,Qt::magenta);
        return;
    }
    QTreeWidget::mousePressEvent(event);
}


2) Обрати внимание на сигнал
Код:
 void customContextMenuRequested ( const QPoint & pos ) 
 Законекть этот сигнал со слотом:

Код:

XmlTree::XmlTree(...)
{
    ...
    connect(this, SIGNAL(customContextMenuRequested(const QPoint &)),this, SLOT(yourSlot(const QPoint &)));
    ...
}


void XmlTree::yourSlot(const QPoint &pt)
{
    QTreeWidgetItem *item = itemAt(pt);
    if (!item) return;
    ...
}


Ты получишь указатель на элемент, по которому произвёл клик правой кнопкой мыши. Далее делай что нужно.
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
ZIkos
Гость
« Ответ #2 : Май 09, 2007, 19:19 »

спасибо
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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