crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

B_u_R_n
  опции профиля:
сообщение 7.12.2011, 14:10
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 22
Регистрация: 6.12.2011
Пользователь №: 3048

Спасибо сказали: 0 раз(а)




Репутация:   0  


Помогли мне с классом , получилось вот что
class MyTabWidget : public QTabWidget
{
    Q_OBJECT
public:
    MyTabWidget(QWidget *parent = 0) : QTabWidget(parent)
    {
        tabBar()->installEventFilter(this);
    }

signals:
    void tabBarDoubleClicked();

protected:
    bool eventFilter(QObject *o, QEvent *e)
    {
        if (o != tabBar())
            return false;

        if (e->type() == QEvent::MouseButtonDblClick) {
            QMouseEvent *me = static_cast<QMouseEvent *>(e);

            if (tabBar()->tabAt(me->pos()) != -1)
            {
                emit tabBarDoubleClicked();
            }

            return true;
        }
        return false;
    }
};

но почему-то если вклад несколько, сигнал срабатывает столько раз, сколько страниц на tabWidget -е моем
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
novichkov
  опции профиля:
сообщение 7.12.2011, 14:31
Сообщение #2


Студент
*

Группа: Участник
Сообщений: 64
Регистрация: 20.3.2008
Из: Северодвинск
Пользователь №: 128

Спасибо сказали: 6 раз(а)




Репутация:   1  


А у меня переопределен mouseDoubleClickEvent:

class TabBar : public QTabBar
{
    Q_OBJECT
signals:
    void doubleClicked(int);
public:
    TabBar(QWidget *parent = 0);
protected:
    void mouseDoubleClickEvent(QMouseEvent * event) {
        int pos=tabAt(event->pos());
        if (event->button()==Qt::LeftButton && pos!=-1)
            emit doubleClicked(pos);
    }
};

class TabWidget : public QTabWidget
{
    Q_OBJECT
public:
    explicit TabWidget(QWidget *parent = 0): QTabWidget(parent)
    , m_tabBar(new TabBar(this))
{//Trace trace(Q_FUNC_INFO);
    connect(m_tabBar, SIGNAL(doubleClicked(int)), this, SIGNAL(newTab(int)));
    setTabBar(m_tabBar);
}
signals:
    void newTab(int);
private:
    TabBar *m_tabBar;
};


Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 9.5.2025, 14:00