crossplatform.ru

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


  Ответ в двойной клик на tabWidget
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
novichkov Дата 7.12.2011, 18:23
  QTabWidget::setTabsClosable ( bool closeable )
+ соответствующий слот, как сказал silver47
silver47 Дата 7.12.2011, 18:04
 
QObject::connect(TAB, SIGNAL(tabCloseRequested(int)), this, SLOT(closeTabRequest(int)));

А там уж что хотите делайте с виджетом :) проверяйте состояние и выводите запрос на сохранение, или же удаляйте таб и удаляйте виджет.
Пы.Сы. чтобы предупредить упреки в мой адрес, я традиционно, делю проверку на сохраненные\не сохраненные изменения в переопределенном методе CloseEvent
B_u_R_n Дата 7.12.2011, 14:44
  вот сразу дабы не плодить темы , а есть ли возможность динамически на определенную табу добавлять функцию закрытия ее пользователем(на странице таба крестик ) что бы пользователь мог его закрыть, после определенных действий
novichkov Дата 7.12.2011, 14:31
  А у меня переопределен 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;
};


B_u_R_n Дата 7.12.2011, 14:10
  Помогли мне с классом , получилось вот что
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 -е моем
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 28.4.2024, 3:50