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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Не могу отловить mouseMoveEvent на виджете  (Прочитано 3028 раз)
Martiro
Гость
« : Февраль 01, 2013, 13:35 »

Главная форма:
Код
C++ (Qt)
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
  ui->setupUi(this);
  tabWidget = new MyTableWidget;
  tabWidget = (MyTableWidget*)ui->tableWidget;
  tabWidget->setMouseTracking(true);
}
 

Переопределенный класс:
Код
C++ (Qt)
class MyTableWidget : public QTableWidget
{
   Q_OBJECT
public:
  MyTableWidget(QWidget *parent = 0);
protected:
  virtual void mouseMoveEvent(QMouseEvent *event)
     {
        qDebug("myTable");
     }
}
 
tabWidget объявлен глобально.
С остальными переменными, я надеюсь, все прозрачно...

Свой класс написал, так как в конструкторе форм QtCreator не дает возможности определить для QTableWidget соответствующего сигнала/слота на обработку события перемещения мыши.

Однако, переопределение класса не помогло в  обработке события перемещения по виджету таблицы. Перемещение не ловится.
Если переопределить  маусМув главной формы то курсор все равно не отлавливается, не помогает даже setMouseTracking(true) для главной формы.
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #1 : Февраль 01, 2013, 13:45 »

Код
C++ (Qt)
tabWidget->viewport()->setMouseTracking(true);

PS. только тебе это навряд ли поможет, т.к. такие грязные манипуляции
Код
C++ (Qt)
  tabWidget = new MyTableWidget;
  tabWidget = (MyTableWidget*)ui->tableWidget;
никак не заставят tabWidget стать экземпляром MyTableWidget.

Цитировать
Свой класс написал, так как в конструкторе форм QtCreator не дает возможности определить для QTableWidget соответствующего сигнала/слота на обработку события перемещения мыши.
Чтобы решить эту проблему в дизайнере на размещённом QTableWidget в попап меню выбери 'Promote to...' и пропиши в диалоге MyTableWidget.
Подробнее см. здесь.
« Последнее редактирование: Февраль 01, 2013, 14:00 от GreatSnake » Записан

Qt 5.11/4.8.7 (X11/Win)
Martiro
Гость
« Ответ #2 : Февраль 01, 2013, 14:07 »

Долго искал как в дизайнере переопределить класс, все никак не мог наткнутся на этот способ!
Спасибо огроменное! Заработало!
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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